6-5 奇数值结点链表 (20 point(s))


本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:
struct ListNode {
int data;
ListNode *next;
};
函数接口定义:

struct ListNode *readlist();
struct ListNode *getodd( struct ListNode **L );
函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。

函数getodd将单链表L中奇数值的结点分离出来,重新组成一个新的链表。返回指向新链表头结点的指针,同时将L中存储的地址改为删除了奇数值结点后的链表的头结点地址(所以要传入L的指针)。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
int data;
struct ListNode *next;
};

struct ListNode *readlist();
struct ListNode *getodd( struct ListNode **L );
void printlist( struct ListNode *L )
{
struct ListNode *p = L;
while § {
printf("%d “, p->data);
p = p->next;
}
printf(”\n");
}

int main()
{
struct ListNode *L, *Odd;
L = readlist();
Odd = getodd(&L);
printlist(Odd);
printlist(L);

return 0;

}

/* 你的代码将被嵌在这里 */
输入样例:

1 2 2 3 4 5 6 7 -1
输出样例:

1 3 5 7
2 2 4 6
Author
C课程组
Organization
浙江大学
Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

struct ListNode *getodd( struct ListNode **L ){struct ListNode *p = *L, *pOdd = NULL, *pEven = NULL, *head;int oddCnt = 1;int evenCnt = 1;*L = NULL;//防止只有一个奇数结点while (p != NULL) {if(p->data % 2 == 1){//head = delete(*L, cnt);//删除节点后,cnt在链表里面的位置会改变if(oddCnt == 1){pOdd = p;head = p;}else{pOdd->next = p;pOdd = pOdd->next;}oddCnt++;}else{if(evenCnt == 1){pEven = p;*L = p;}else{pEven->next = p;pEven = pEven->next;}evenCnt++;}p = p->next;}if(pEven != NULL)  pEven->next = NULL;//容易忽略,最后注意设置尾结点,来消除原有结点if(pOdd != NULL)   pOdd->next = NULL;//return head;
}struct ListNode *readlist()
{struct ListNode *p = (struct ListNode*)malloc(sizeof(struct ListNode));struct ListNode *q = p, *head = p;int num;scanf("%d", &num);while (num != -1) {p->data = num;q = p;p = (struct ListNode*)malloc(sizeof(struct ListNode));q->next = p;scanf("%d", &num);}if(q != NULL)q->next = NULL;return head;
}

浙大大学 PTA 奇数值结点链表相关推荐

  1. PTA 奇数值结点链表 超详细

    PTA 奇数值结点链表 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode {int data;ListN ...

  2. PTA.奇数值结点链表(C语言链表应用)

    老样子,自觉代码比网上其它的大部分人高效且简单易懂,故在此分享. 题干: 裁判程序: 样例: 先说思路吧,我想的是把原链表分为奇数链表和偶数链表,但不去开辟空间(malloc),这样就可以达到节省时间 ...

  3. 习题11-7 奇数值结点链表 (20 分) -链表

    习题11-7 奇数值结点链表 (20 分) 本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode {int ...

  4. PTA-链表学习-----奇数值结点链表

    奇数值结点链表 解法一 struct ListNode *readlist() {struct ListNode *head = NULL, *p;int data=0;while(scanf(&qu ...

  5. 奇数值结点链表(C语言实现)

    习题11-7 奇数值结点链表(C语言实现) 分析:没有头结点的链表操作太麻烦了. ①注意第一个结点是奇数值结点的删除和其他结点的删除情况: ②注意奇数链表第一个结点的创建和后续结点的创建. #incl ...

  6. 6-5 奇数值结点链表 (20分)

    6-5 奇数值结点链表 (20分)本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode {int data; ...

  7. 奇数值结点链表 (20 分)

    本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode {int data;ListNode *next;}; ...

  8. c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)

    本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中奇数值的结点重新组成一个新的链表.链表结点定义如下: struct ListNode { int data; ListNode *next; ...

  9. 实验11 链表 程序1奇数值结点链表

    输入若干个正整数(输入-1为结束标志)建立一个单向链表,头指针为L,将链表L中奇数值的结点重新组成一个新的链表NEW,并输出新建链表的信息. 第一种方法:逆向思维 #include<stdio. ...

最新文章

  1. MindInsight计算图可视设计
  2. pku 3422 Kaka's Matrix Travels 最大费用最大流
  3. Java项目:无库版商品管理系统(java+Gui+文档)
  4. ISME|宏转录组揭示参与深海碳氮循环的微生物
  5. 几处早莺争暖树下一句是什么,几处早莺争暖树后一句
  6. 如果你没有考上985,没有考上211……
  7. 设备树与驱动的关系_裸机程序如何驱动硬件?
  8. 协程在Socket上的应用
  9. linux read while 变量运算
  10. Mysql时间格式转换
  11. Day2 HTML基本标签元素
  12. java基础应用_Java基础(应用篇)
  13. nodejs+express留言板功能实现
  14. Mockplus 3.2前瞻,五大特色功能让你惊喜!
  15. 从零开始,做一个NodeJS博客(零):整体规(chui)划(niu)
  16. matlab cftool光滑曲线导出为什么就不光滑了_不会吧,还有人不知道MATLAB这8个小技巧?...
  17. 如何判断数字华容道中随机排列的数字阵列是否有解
  18. Verilog 带符号的数值运算 乘法器
  19. 模拟100个 正态分布的随机数,计算其样本均值和样本方差,观察其余真实值的差异。当增大样本容量时,其差异有何规律。
  20. 考学硕研究生通信专业多还是考计算机专业,我为什么考南邮通信专业硕士研究生...

热门文章

  1. 温莎计算机应用硕士是针对国际学生的吗,专业推荐 | 加拿大留学,温莎大学英语计算机专业了解一下...
  2. linux运维排查常用命令(开发专享)
  3. 计算机网络总是识别不了怎么办,电脑连wifi总是正在识别怎么办
  4. Unity bug error CS1703: Multiple assemblies with equivalent identity have been imported...
  5. Unity ios打包卡在Converting managed assemblies to C++
  6. 【数据挖掘概念与技术】学习笔记5-数据立方体技术
  7. anbox 使用情况_如何在Linux PC上启动并运行Anbox?
  8. 如何将两张图片上下合成一张?
  9. BBED处理RMAN-03009,ORA-1956
  10. axure原型怎么让文字自动换行_苹果手机输入法编辑文字时怎样换行