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

来源:互联网 发布:查看端口状态命令 编辑:程序博客网 时间:2024/05/25 18:12

Problem Description

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

Input

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

Output

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

Example Input

12 56 4 6 55 15 33 62 -1

Example Output

62 33 15 55 6 4 56 12

#include<stdio.h>#include<stdlib.h>typedef struct node{    int data;    struct node *next;}ST;ST *creat(){    ST *head, *tail, *p;    head = (ST *)malloc(sizeof(ST));    head->next = NULL;    tail = head;    for(;;)    {        p = (ST *)malloc(sizeof(ST));        scanf("%d", &p->data);        if(p->data == -1)        {            free(p);            break;        }        p->next = NULL;        tail->next = p;        tail = p;    }    return head;}void reverse(ST *head){    ST *tail, *p;    tail = head->next;    head->next = NULL;    p = tail->next;    while(tail != NULL)    {        tail->next = head->next;        head->next = tail;        tail = p;        if(tail != NULL)        {            p = p->next;        }    }}void input(ST *head){    ST *tail;    for(tail = head->next; tail != NULL; tail = tail->next)    {        printf("%d", tail->data);        if(tail->next == NULL) printf("\n");        else printf(" ");    }}int main(){    ST *head;    head = creat();    reverse(head);    input(head);    return 0;}
阅读全文
0 0
原创粉丝点击