|

楼主 |
发表于 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);
-
-
-
-
-
-
-
-
-
-
- }
复制代码 |
|