typedef struct node{
int data;
node* next;
}node;
const int N=5;
const int a[N]={1,2,3,4,5};
node* create()
{
node* head=(node*)malloc(sizeof(node));
head->next=null;
node* t=head;
for(int i=0;i<N;i++){
node* p=(node*)malloc(sizeof(node));
p->data=a[i];
p->next=null;
t->next=p;
t=p;
}
return head;
}
void output(node* head)
{
head=head->next;
while(head){
cout<<head->data<<endl;
head=head->next;
}
}
// 有头节点,所以从next开始进行
node* reverse(node* head)
{
if(head==null||head->next==null)
return head;
node* p1=head->next;
node* p2=head->next->next;
node* p3=null;
p1->next=null;
// 这样写
while(p2){
p3=p2->next;
p2->next=p1;
p1=p2;
p2=p3;
}
head->next=p1;
// 或者这样写
#if 0
while(p2)
{
p3=p2->next;
if(p3==null)
head->next=p2;
p2->next=p1;
p1=p2;
p2=p3;
}
#endif
return head;
}
// 无头节点
node* reverse(node* head)
{
if(head==null||head->next==null)
return head;
node* p1=head;
node* p2=head->next;
node* p3=null;
p1->next=null;
while(p2)
{
p3=p2->next;
if(p3==null)
head=p2;
p2->next=p1;
p1=p2;
p2=p3;
}
return head;
}
求链表的逆置
最新推荐文章于 2024-10-12 20:31:01 发布