习题11-8 单链表结点删除(没看懂我撤硕大口吃翔)
解释都在代码里了
#include <stdio.h>
#include <stdlib.h>
//主要讲删除部分的函数
struct ListNode
{int data;struct ListNode* next;
};
struct ListNode* readlist()
{struct ListNode* head=NULL,*node,*tempp=NULL;int n;while (scanf("%d", &n)&&n !=-1){node = (struct ListNode*)malloc(sizeof(struct ListNode));node->data = n;node->next = NULL;if (head == NULL)head = node;elsetempp->next = node;tempp = node;}return head;
}
struct ListNode* deletem(struct ListNode* L, int m)
{struct ListNode *head,*tempp,*t;//t保存被释放内存地址,tempp是上一节点地址,head就是头节点的地址head = tempp = t = NULL;head = L;while (L!=NULL){if (L->data == m)//符合条件{if (head->data == m)//头节点的删除{t = head;//t的作用是保存被删除节点的地址,在循环尾部再释放head = head->next;//头部后移,这就是为什么要返回头部的值重新赋值给L的原因}else//普通节点和尾节点{t = L;//作用同上tempp->next = L->next;//上一个节点的指针跨过中间的节点指向下一个节点的地址}}tempp = L;//tempp储存上一个节点的地址L = L->next;//节点下移一位free(t);//释放内存t = NULL;//这点很重要,否则当下一个值不符合条件,t将指向被释放的内存的地址}return (head);//返回头指针(这括号其实没啥用,说明这是一个指针)
}
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();//函数作用:输入并创建链表,将链表头指针返回存到L中scanf("%d", &m);//输入要删除的数L = deletem(L, m);//该函数返回删除数据后链表的头指针printlist(L);//打印return 0;
}
习题11-8 单链表结点删除(没看懂我撤硕大口吃翔)相关推荐
- 习题11-8 单链表结点删除
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除. 链表结点定义如下: struct ListNode {int data;ListNode *next; }; ...
- 6-3 单链表结点删除 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode { int data; ListNode *next; } ...
- 单链表结点删除--PTA
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode {int data;ListNode *next; }; ...
- PTA 单链表结点删除
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode {int data;ListNode *next; }; ...
- 单链表结点删除PTA
本题要求实现两个函数,分别将读入的数据存储为单链表.将链表中所有存储了某给定值的结点删除.链表结点定义如下: struct ListNode {int data;ListNode *next; }; ...
- Nwafu-OJ-1485 Problem o C语言实习题八——单链表结点的阶乘和
问题 : C语言实习题八--单链表结点的阶乘和 时间限制: 1 Sec 内存限制: 128 MB 提交: 5120 解决: 1555 [提交][状态][讨论版] 题目描述 要求实现一个函数,求单向 ...
- 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...
- python链表中删除一个节点数据_python实现单链表中删除倒数第K个节点的方法
本文实例为大家分享了python实现单链表中删除倒数第K个节点的具体代码,供大家参考,具体内容如下 题目: 给定一个链表,删除其中倒数第k个节点. 代码: class LinkedListAlgori ...
- c语言单链表删除倒数第k个数,在单链表中删除倒数第k个节点
实现方式很多,在这里只说两种实现方式.看不懂时候,大家可以画画图,对理解为什么很有帮助. 第一种方式: 1.首先判断K值和链表是否为空,如果k<=0,或链表为空,直接返回head: 2.满足上面 ...
最新文章
- LeetCode 简要日记 455 104
- 虚拟机克隆_了解Java中的可克隆接口
- mysql汉化版不同_Mysql各个版本区别及官网下载
- python自动化干什么-高效工作,拒绝加班,看Python自动化功能到底有多强大
- POJ3272 Cow Traffic
- while(scanf(%d,n)!=EOF)
- 百度定位sdk使用说明
- [转载]spring security 的 logout 功能
- HTTPS原理全面介绍【备查】
- Linux学习之shell
- C语言内存泄漏问题检视方法
- arduino循迹小车
- NoSQL数据库兴起
- 网页在线播放器 ····
- Java毕业设计——员工管理系统
- OFDM系统中的信号检测算法分类和详解
- 最新卡巴斯基互联网安全套装7.0(kis7)系列激活码
- RESTFUL API 安全设计指南
- Elk-Metricbeat配置Nginx的日志分析 (Metricbeat-part2)
- 北京最最最牛的IT公司都在这了 。。。