浙大版《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-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解