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

来源:互联网 发布:python和java待遇 编辑:程序博客网 时间:2024/05/26 05:53

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

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 *creat(){   struct node *head, *tail, *p ;   int num ;   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->data=num;   p->next=NULL ;   tail -> next=p ;   tail=p; } return (head) ;}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 ; } return (head);}int main(){  struct node *head, *p ;  head = creat() ;  head = reverse(head) ;  p = head->next;  while(p->next!=NULL)  {    printf("%d ", p->data);    p = p->next;  }    printf("%d\n", p->data);   return 0;}

0 0
原创粉丝点击