| 
 | 
 
 
 楼主 |
发表于 2020-11-7 21:02:15
|
显示全部楼层
 
 
 
 本帖最后由 爱学习520 于 2020-11-7 21:11 编辑  
 
这是我上面的完整代码,建立了一个带头节点的链表。谁帮我看看上面哪里错了,可以用下面这个代码调试一下看看 
 
- #include<stdio.h>
 
 - #include<stdlib.h>
 
 - typedef struct node
 
 - {
 
 -         int data; 
 
 -         struct node *next;
 
 - }linklist,*Plinklist;
 
  
- Plinklist create_list()
 
 - {
 
 -         
 
 -         Plinklist phead,ptail,p;
 
 -         int i,len;
 
 -         
 
 -         printf("请输入需要创建的链表个数:\n"); 
 
 -         scanf("%d",&len);
 
  
 
-         //建立空结点,该结点不存放数据 
 
 -         p=(Plinklist)malloc(sizeof(linklist));
 
 -         phead=ptail=p;
 
 -         p->next=NULL;
 
 -         
 
 -         for(i=0;i<len;i++)
 
 -         {
 
 -                 
 
 -                 p=(Plinklist)malloc(sizeof(linklist));
 
 -                 
 
 -                 //给申请的空间结点赋值        
 
 -                 printf("请输入第%d需要每个节点数据:\n",i+1); 
 
 -             scanf("%d",&p->data);
 
 -             
 
 -         //连结链表 
 
 -             ptail->next=p;
 
 -             p->next=NULL;
 
 -             
 
 -             //记录当前指向,不然下次循环得覆盖了 
 
 -             ptail=p;
 
  
-         }
 
 -         
 
 -         return phead;
 
  
- } 
 
  
- void ChangeList(Plinklist p)
 
 - {
 
 -         
 
 -         //h1存放奇数、h2存放偶数 
 
 -         Plinklist h1=p;
 
 -         Plinklist h2=(Plinklist)malloc(sizeof(linklist)); 
 
 -         Plinklist even=h2,odd=h1;
 
 -         
 
 -         p=p->next; 
 
  
-         //遍历链表 
 
 -         while(p)
 
 -         {
 
 -         
 
 -                 //识别偶数 
 
 -                 if(p->data%2==0)
 
 -                 {
 
 -                         even->next=p;
 
 -                         even=p;
 
 -                         
 
 -                 }
 
 -                 //识别奇数 
 
 -                 if(p->data%2!=0)
 
 -                 {
 
 -                         odd->next=p;
 
 -                     odd=p;
 
 -             
 
 -                 }
 
 -                 p=p->next;
 
 -                 
 
 -         } 
 
 -         
 
 -         //测试输出 
 
 -         h1=h1->next;
 
 -         h2=h2->next;
 
 -         
 
 -         printf("奇数链表的输出\n");
 
 -         while(h1)
 
 -         {        
 
 -                 printf("%d",h1->data);
 
 -                 h1=h1->next;        
 
 -         }
 
 -         printf("\n偶数链表的输出\n");
 
 -         while(h2)
 
 -         {        
 
 -                 printf("%d",h2->data);
 
 -                 h2=h2->next;        
 
 -         }
 
 - }                
 
  
- //函数测试
 
 - int main()
 
 - {
 
 -         
 
 -         Plinklist p=create_list();
 
 -         ChangeList(p);
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -         
 
 -  } 
 
  复制代码 |   
 
 
 
 |