单链表逆置,C++实现

来源:互联网 发布:linux 重启ssh 编辑:程序博客网 时间:2024/06/05 07:56
问题描述:编写函数将单链表逆置,逆置过程中不允许创建新的单链表。
问题分析:由于不能创建新的单链表,于是只能在该单链表上边遍历边逆置。定义三个指针p,q,r,以p为遍历单链表的指针变量,让p指向一个结点,q指向其后的一个结点,r指向q之后的一个结点(r可以为空),如下图所示。接着让q结点原来指向r结点的指针现在指向p结点,再将p,q指向的结点向后移,如此循环达到逆置。

实现代码:

<span style="font-size:14px;">#include <iostream>nodetype *invert(nodetype *h) //实现单链表的逆置{    nodetype *p,*q,*r;if(len(h)<=1){cout<<"逆置的单链表至少有2个结点"<<endl;return NULL;  }  else { p=h;q=p->next; while(q!=NULL) { r=q->next; q->next=p; p=q; q=r; } h->next=NULL; h=p; return h; }}</span>

新手一枚,如有错误,请多指正。

0 0
原创粉丝点击