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

来源:互联网 发布:网络棋牌游戏广告语 编辑:程序博客网 时间:2024/06/02 04:45

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

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;
    }
}
0 0
原创粉丝点击