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

来源:互联网 发布:intelj java.util.map 编辑:程序博客网 时间:2024/04/30 08:43

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>#include<string.h>struct node{int data;struct node *next;};struct node *creat(){int num;struct node *head,*tail,*p;head=(struct node *)malloc(sizeof(struct node));head->next=NULL;tail=head;while(scanf("%d",&num)&&num!=-1){p=(struct node *)malloc(sizeof(struct node));p->next=NULL;p->data=num;tail->next=p;tail=p;    }return head;}struct node *T(struct node *head){struct node *p,*q;p=head->next;head->next=NULL;q=p; p=p->next;while(q){q->next=head->next;head->next=q;q=p;if(p)p=p->next;}//q=p跟p=p->next不能换位置,因为q->next已经改变成head->next return head;}int main(){struct node *head,*p,*tail;head=creat();head=T(head);head=head->next;while(head->next!=NULL){printf("%d ",head->data);head=head->next;}printf("%d\n",head->data);return 0;}


0 0
原创粉丝点击