注:链表没有伪头部,第一个元素是数据元素

节点定义如下:

struct node
{
int data;
node *next;
};

 

非递归算法:

 1 node * Reverse(node*head)
2 {
3 if(head==NULL)return NULL;
4 node*pre=head;
5 node*p=pre->next;
6 node *q=NULL;
7 while(p!=NULL)
8 {
9 q=p->next;
10 p->next=pre;
11 if(pre==head)//反转后防止出现环
12 pre->next=NULL;
13 pre=p;
14 p=q;
15 }
16 return pre;
17 }

 

递归算法:

node * Reverse(node *List,node*pre=NULL){
	if(List==NULL) return List;
	node *next = List->next;
	List->next=pre;
	return next==NULL?List:Reverse(next,List);
}

  

相关文章:

  • 2021-09-22
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
  • 2022-01-13
  • 2021-12-28
  • 2021-08-06
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案