浙大c语言作业整数链表,浙大版《C语言程序设计(第3版)》题目集 - 习题11-7 奇数值结点链表(20 分)...

本文介绍了一种链表操作算法,该算法能够将链表中的奇数节点和偶数节点进行分离,并分别构建新的链表。通过巧妙地处理指针指向及节点分配,实现了高效且简洁的解决方案。

题目链接:点击打开链接

题目大意:略。

解题思路:题目说删除了,其实可以转化为再搞一个获取奇数时的做法来做偶数的情况,最后把地址赋值给L,这样思路就简单许多~。还有这里带两个星号的L,其实多了一个星号是因为传参时,传进去的是指针变量的地址(此地址非内容)。

AC 代码

struct ListNode *readlist()

{

struct ListNode *h, *p, *pre;

int da, fst=1;

while(~scanf("%d", &da) && da!=-1)

{

p=(struct ListNode*)malloc(sizeof(struct ListNode));

p->data=da;

if(!fst) pre->next=p, pre->next->next=NULL, pre=pre->next;

if(fst) pre=h=p, fst=0;

}

return h;

}

struct ListNode *getodd( struct ListNode **L )

{

struct ListNode *p, *pre1, *pre2, *h1=NULL, *h2=NULL;

int f1=1, f2=1, da;

while(*L)

{

da=(*L)->data;

if(da%2)

{

p=(struct ListNode*)malloc(sizeof(struct ListNode));

p->data=da;

if(!f1) pre1->next=p, pre1->next->next=NULL, pre1=pre1->next;

if(f1) pre1=h1=p, f1=0;

}

else

{

p=(struct ListNode*)malloc(sizeof(struct ListNode));

p->data=da;

if(!f2) pre2->next=p, pre2->next->next=NULL, pre2=pre2->next;

if(f2) pre2=h2=p, f2=0;

}

*L=(*L)->next;

}

*L=h2;

return h1;

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值