标题:[原创]链表逆置
取消只看楼主
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
 问题点数:0 回复次数:0 
[原创]链表逆置
题目:将一个有头结点的链表逆置
我写的时候用-1做为结束标记。我用了Head做为辅助头结点。有兴趣的去看看。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node{
  int data;
  struct node *next;
}Node,*LinkList;
void CreateList(LinkList *head)
{   LinkList p,q;
    int x;
 if((*head=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
    (*head)->next=NULL;
 q=(*head);
 printf("please input data:\n");
 scanf("%d",&x);
 do{
        if((p=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
  p->data=x;
  p->next=NULL;
  q->next=p;
  q=p;
  p=NULL;
  printf("please input number:\n");
  fflush(stdin);
  scanf("%d",&x);
 }while(x!=-1);
}
void Reverse(LinkList head)
{LinkList p,q,s=NULL,Head;
 int count=0,i;
 p=head->next;
 while(p)
   {   count++;
       p=p->next;
   }
   p=head->next;
   if((Head=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
   Head->next=p;
   head->next=NULL;
 for(i=0;i<count;i++)
   {  p=Head->next;
      Head->next=p->next;
   p->next=NULL;
   if(s==NULL)
   s=p;
   else
   { p->next=s;
      s=p;
   }
   }
   head->next=s;
   free(Head);
}
void Print(LinkList head)
{ LinkList p;
  p=head->next;
  while(p)
  {  printf("%d\t",p->data);
     p=p->next;
   }
  
}
main()
{ LinkList head;
  CreateList(&head);
  Print(head);
  Reverse(head);
  printf("\n");
  Print(head);
}

搜索更多相关主题的帖子: 链表 
2005-05-01 01:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-17142-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.141387 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved