代码实现
#include<iostream>
using namespace std;
/*单链表的逆置 :利用辅助指针,把下一节点用r指针提前保存,然后修改指向关系即可*/
struct Node
{
int data;
Node *next;
};
void CreateList(Node *Head)//创建链表
{
Node *p=Head;
do
{
Node *NewNode=new Node;
cin>>NewNode->data;
NewNode->next=NULL;
p->next=NewNode;
p=NewNode;
}while(cin.get()!='\n');//识别到回车换行就停止输入
}
void show(Node *Head)//输出数据
{
Node *p;
p=Head->next;
while(p!=NULL)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
void ReserveList(Node *Head)//逆置函数
{
Node *p=NULL,*r=NULL;
p=Head->next;
Head->next=NULL;
while(p!=NULL)
{
r=p->next;
p->next=Head->next;
Head->next=p;
p=r;
}
}
int main()
{
Node *Head;
Head=new Node;
Head->data=0;
Head->next=NULL;
CreateList(Head);
ReserveList(Head);
show(Head);
return 0;
}
建议画图理解节点之间指向关系的修改过程