您的位置:首页 > 理论基础 > 数据结构算法

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

2016-08-01 09:10 316 查看


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




Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^



题目描述

输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。


输入

输入多个整数,以-1作为结束标志。


输出

输出逆置后的单链表数据。


示例输入

12 56 4 6 55 15 33 62 -1



示例输出

62 33 15 55 6 4 56 12



提示

不得使用数组。

#include <stdio.h>

#include <stdlib.h>

typedef  struct  LNode

{

    LNode *next;

    int data;

} LNode,*linklist;

linklist create(LNode *L)

{

    LNode *p,*tail;

    int m;

    L=(linklist)malloc(sizeof(LNode));

    L->next=NULL;

    tail=L;

    while(scanf("%d",&m),m!=-1)

    {

        p=(linklist)malloc(sizeof(LNode));

        p->data=m;

        p->next=NULL;      //指空;

        tail->next=p;       //连接到tail之后;

        tail=p;            //tail 后移;

    }

    return L;

}

linklist Inverse(LNode *L){

    LNode *p,*k,*q;

    p=L->next; //将p代表第一个节点;

    L->next=NULL; //独立出L;

    while (p!=NULL) { //类似于逆序建链表一样,将p及以后的节点连接到L后;

        q=p->next;

        p->next=L->next;

        L->next=p;

        p=q;

    }

    return L;

}

int main()

{

    int i=1;

    LNode *l,*p;

    l=create(l);

    l=Inverse(l);

    p=l->next;

    while(p!=NULL)

    {

        printf("%d ",p->data);

        p=p->next;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: