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

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

2014-11-01 03:20 267 查看

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

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>

        struct node
        {
            int data;
            struct node *next;
        };

        struct node  *reverse(struct node *head)
        {
            struct node *p, *q ;
            p = head->next ;
            head->next=NULL ;
            q = p->next ;
           while (p!=NULL)
           {
               p->next=head->next ;
               head -> next = p ;
               p = q ;
               if(q!=NULL)
               q = q->next ;
           }
           head = head->next;
        while(head!=NULL)
        {
             if(head->next==NULL)
                 printf("%d\n", head->data);
             else
                 printf("%d ", head->data);
             head = head->next;
        }
}
        int main()
        {
            int n, m, i, t, cnt=0;
            struct node *head, *tail, *p;
            head = (struct node *)malloc(sizeof(struct node));
            tail = head;

            while(scanf("%d", &t) && t!=-1)
            {
                p = (struct node *)malloc(sizeof(struct node));
                p->data = t;
                tail->next = p;
                p->next = NULL;
                tail = p;
                cnt++;
            }
            reverse(head);

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