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

来源:互联网 发布:java项目的工作流程 编辑:程序博客网 时间:2024/06/06 03:58

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

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

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 int Elemtype;typedef struct Lnode{    Elemtype data;    struct Lnode *next;}*Linklist;void create(Linklist &head){    Linklist p, tail;    head = new Lnode;    head->next = NULL;    tail = head;    while(1)    {        p = new Lnode;        scanf("%d", &p->data);        if(p->data == -1)            break;        p->next = NULL;        tail->next = p;        tail = p;    }}void inverse(Linklist head){    Linklist p, q;    p = head->next;    head->next = NULL;    q = p->next;    while(p)    {        p->next = head->next;        head->next = p;        p = q;        if(q)            q = q->next;    }}void show(Linklist head){    Linklist p;    p = head->next;    while(p)    {        if(p->next == NULL)        printf("%d\n", p->data);        else            printf("%d ", p->data);        p = p->next;    }}int main(){    Linklist head;    head = new Lnode;    create(head);    inverse(head);    show(head);    return 0;}


原创粉丝点击