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

来源:互联网 发布:淘宝店铺名片上的店名 编辑:程序博客网 时间:2024/05/17 12:53

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

TimeLimit: 1000MS Memory Limit: 65536KB

SubmitStatistic

ProblemDescription

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

Input

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

Output

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

ExampleInput

1256 4 6 55 15 33 62 -1

ExampleOutput

6233 15 55 6 4 56 12

Hint

不得使用数组。

Author

 

C#include<stdio.h>#include<stdlib.h>#include<string.h>struct node{  int a;  struct node *next;};struct node*creat(){  struct node *head,*p,*tail;  head = (struct node*)malloc(sizeof(struct node));  head->next =NULL;  for(int i=1;;i++)  {     p = (struct node*)malloc(sizeof(struct node));     scanf("%d",&p->a);  if(p->a==-1)break;     p -> next= head->next;     head->next = p;  }  return head;}void show(struct node *head){    struct node *p;    p = head->next;    while(p!=NULL)    {       if(p->next!=NULL)       {         printf("%d ",p->a);       }       else       {        printf("%d\n",p->a);       }       p = p->next;    }}int main(){  int n;  struct node *head;  head= creat();  show(head);  return 0;}/***************************************************User name: jk160505徐红博Result: AcceptedTake time: 0msTake Memory: 116KBSubmit time: 2017-01-12 15:32:45****************************************************/C2#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{    int data;    struct node *next;};struct node*creat(){   struct node *tail,*p,*head;   head = (struct node*)malloc(sizeof(struct node));   head->next=NULL;   tail = head;   while(1)   {       p = (struct node*)malloc(sizeof(struct node));       scanf("%d",&p->data);        if(p->data==-1)break;        p ->next = NULL;       tail->next = p;       tail = p;   }  return (head);}struct node*ncreat(int n){   struct node *head,*p;   head = (struct node*)malloc(sizeof(struct node));   head->next = NULL;   for(int i=1;i<=n;i++)   {        p = (struct node*)malloc(sizeof(struct node));        scanf("%d",&p->data);        p->next = head->next;        head->next = p;   }   return (head);}void show(struct node*head){  struct node *p;  p =head->next;  while(p)  {    if(p->next!=NULL)    {       printf("%d ",p->data);    }    else    {       printf("%d\n",p->data);    }    p = p->next;  }}int del(struct node *head,int n){    struct node *p,*q,*t;    p = head->next;    while(p)    {        q = p;        t = q->next;        while(t)        {           if(p->data==t->data)           {                q->next = t->next;                free(t);                t = q->next;                n--;           }           else           {              q = t;              t = q->next;           }        }        p = p->next;    }  return n;}void nizhi(struct node*head){    struct node *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;        }    }}int main(){    struct node *head;    head = (struct node*)malloc(sizeof(struct node));    int n;     head=creat();      nizhi(head);    show(head);   return 0;}/***************************************************User name: jk160505徐红博Result: AcceptedTake time: 0msTake Memory: 104KBSubmit time: 2017-01-12 20:54:25****************************************************/

0 0