数据结构实验之链表三:链表的逆置
程序员文章站
2024-01-15 15:39:22
...
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
struct node *h,*p,*t;
int main()
{
h=(struct node *)malloc(sizeof(struct node));
h->next=NULL;
t=h;
int a;
while(scanf("%d",&a)&&a!=-1)
{
p=(struct node *)malloc(sizeof(struct node));
p->data=a;
p->next=NULL;
t->next=p;
t=p;
}
struct node *q;
p=h->next;
q=p->next;
h->next=NULL;
while(p)
{
p->next=h->next;
h->next=p;
p=q;
if(q)
q=q->next;
}
p=h->next;
while(p->next)
{
printf("%d ",p->data);
p=p->next;
}
printf("%d",p->data);
return 0;
}
只是进行了逆置,基于原来的链表变化,没有产生新链表!逆置过程中用了两个移动指针p,q
下一篇: docker flannel网络实验