不带头结点的单链表的就地逆置算法

typedef struct node{
	struct node *next;
	int data;
}*LinkList,NODE;

LinkList reverseList(LinkList head)
	if(head==NULL)
		return NULL;
	LinkList p,q,L;
	q=head;
	L=head;
	p->next=NULL;
	while(L){
		L=L->next;
		q->next=p;
		p=q;
		q=L;
	}
	return p;
}

尾插法(递归)

LinkList reverseListTB(LinkList head){
	if(head==NULL)
		return NULL;
	LinkList p;
	if(head->next==NULL){//递归到底
		p = head;
		return p;
	}
	p = reverseListTB(head->next);
	head->next->next = head;
	head->next = NULL;
	return p;//返回新的第一个结点
}
发布了16 篇原创文章 · 获赞 1 · 访问量 1739

猜你喜欢

转载自blog.csdn.net/qq_42584241/article/details/92801588