欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构实验之链表三:链表的逆置

程序员文章站 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