浙大版《C语言程序设计(第4版)》题目集——习题11-8 单链表结点删除 (20 分)
2021/7/12 14:07:10
本文主要是介绍浙大版《C语言程序设计(第4版)》题目集——习题11-8 单链表结点删除 (20 分),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:
struct ListNode { int data; ListNode *next; };
函数接口定义:
struct ListNode *readlist(); struct ListNode *deletem( struct ListNode *L, int m );
函数readlist
从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单链表头结点的指针。
函数deletem
将单链表L
中所有存储了m
的结点删除。返回指向结果链表头结点的指针。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> struct ListNode { int data; struct ListNode *next; }; struct ListNode *readlist(); struct ListNode *deletem( struct ListNode *L, int m ); void printlist( struct ListNode *L ) { struct ListNode *p = L; while (p) { printf("%d ", p->data); p = p->next; } printf("\n"); } int main() { int m; struct ListNode *L = readlist(); scanf("%d", &m); L = deletem(L, m); printlist(L); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
10 11 10 12 10 -1 10
输出样例:
11 12
参考答案:
int size = sizeof(struct ListNode); struct ListNode *readlist() { struct ListNode *p, *head = NULL, *tail = NULL; int data; scanf("%d", &data); while (data != -1) { p = (struct ListNode *)malloc(size); p->data = data; p->next = NULL; if (head == NULL) tail = head = p; //此题也可以不给tail赋值 else tail->next = p; tail = p; scanf("%d", &data); } return head; } struct ListNode *deletem(struct ListNode *L, int m) { struct ListNode *ptr1, *ptr2; // 删除的节点为表头节点 while (L && L->data == m) { ptr2 = L; L = L->next; free(ptr2); } // 空链表 if (L == NULL) return NULL; // 删除的节点不是表头节点 ptr1 = L; ptr2 = ptr1->next; while (ptr2) { if (ptr2->data == m) { ptr1->next = ptr2->next; free(ptr2); } else ptr1 = ptr2; ptr2 = ptr1->next; } return L; }
这篇关于浙大版《C语言程序设计(第4版)》题目集——习题11-8 单链表结点删除 (20 分)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享
- 2024-11-19将文件或目录压缩并保留到指定的固定目录怎么实现?-icode9专业技术文章分享
- 2024-11-19使用 tar 命令压缩文件并且过滤掉某些特定的目录?-icode9专业技术文章分享
- 2024-11-18Nacos安装入门教程
- 2024-11-18Nacos安装入门:轻松掌握Nacos服务注册与配置管理
- 2024-11-18Nacos配置中心入门:新手必读教程