C语言实现单链表节点的删除(带头结点)
我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中具体实现了怎样在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码演示样例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode。删除类型有两种:
(1)删除某个位置pos的节点;
(2)推断x值是否在链表中,若存在则删除该节点;
核心代码例如以下:
//删除某个位置pos的节点
Node *DeletePosNode(Node *pNode,int pos){ int i = 1;
Node *pMove;
Node *pMovePre;
pMovePre = pNode;
pMove = pNode->next;
while (pMove != NULL) {
if (i == pos) { pMovePre->next = pMove->next;
free(pMove);
pMove = NULL;
printf("%s函数运行。在pos=%d位置删除节点成功\n",__FUNCTION__,pos);
return pNode;
}
i++;
pMovePre = pMovePre->next;
pMove = pMove->next;
} printf("%s函数运行,在pos=%d位置删除节点失败\n",__FUNCTION__,pos); return pNode;
} //推断x值是否在链表中,若存在则删除该节点
Node *DeleteValueNode(Node *pNode,int x){ Node *pMovePre;
Node *pMove;
pMovePre = pNode;
pMove = pNode->next;
while (pMove != NULL) {
if (pMove->element == x) {
pMovePre->next = pMove->next;
free(pMove);
pMove = NULL; printf("%s函数运行,删除value=%d节点成功\n",__FUNCTION__,x);
return pNode;
}
pMovePre = pMovePre->next;
pMove = pMove->next;
} printf("%s函数运行,删除value=%d节点失败\n",__FUNCTION__,x); return pNode;
}
C语言实现单链表节点的删除(带头结点)的更多相关文章
- 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
所实现的循环单链表的结构例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill ...
- JAVA单链表的实现-不带头结点且没有尾指针
本程序采用JAVA语言实现了线性表的链式实现.首先定义了线性表的接口ListInterface,然后LList类实现了ListInterface完成了链表的实现. 本实现中,链表是不带表头结点的,且有 ...
- JAVA单链表的实现-不带头结点但带有尾指针
1,本程序实现了线性表的链式存储结构.实现的链表带有两个指针,一个始终指向链表中的第一个结点,另一个指针始终指向链表中的最后一个结点. 之所以设置尾指针,是因为,在插入元素到链表中的末尾时,可以通过尾 ...
- 「C语言」单链表/双向链表的建立/遍历/插入/删除
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- C语言实现单链表(不带头结点)节点的插入
对单链表进行增删改查是最主要的操作.我在上一篇博客<C语言实现链表节点的删除>实现了删除单链表中的某个节点. 这里我们要来实如今某个位置插入节点.演示样例代码上传至https://gith ...
- C语言实现单链表-03版
在C语言实现单链表-02版中我们只是简单的更新一下链表的组织方式: 它没有更多的更新功能,因此我们这个版本将要完成如下功能: Problem 1,搜索相关节点: 2,前插节点: 3,后追加节点: 4, ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- C/C++语言实现单链表(带头结点)
彻底理解链表中为何使用二级指针或者一级指针的引用 数据结构之链表-链表实现及常用操作(C++篇) C语言实现单链表,主要功能为空链表创建,链表初始化(头插法),链表元素读取,按位置插入,(有序链表)按 ...
- C语言实现单链表-02版
我们在C语言实现单链表-01版中实现的链表非常简单: 但是它对于理解单链表是非常有帮助的,至少我就是这样认为的: 简单的不能再简单的东西没那么实用,所以我们接下来要大规模的修改啦: Problem 1 ...
随机推荐
- 日期时间选择器插件flatpickr
前言:在网页上需要输入时间的时候,我们可以用HTML5的inputl中的date类型.但是如下入所示,有些浏览器不支持.flatpickr这个小插件可以解决这个问题. 1.flatpickr日期时间选 ...
- LN : leetcode 5 Longest Palindromic Substring
lc 5 Longest Palindromic Substring 5 Longest Palindromic Substring Given a string s, find the longes ...
- [Android]异常3-java.lang.NoClassDefFoundError: javax.activation.DataHandler
背景:JavaMail发送电子邮件 异常原因: 可能一>缺少DataHandler类相关jar包 可能二>有DataHandler类,DataHandler类与使用的mail.jar包不一 ...
- 我的DBDA类
<?php class DBDA { public $host="localhost"; public $uid="root"; public $pwd= ...
- 【译】x86程序员手册27-7.6任务链
7.6 Task Linking 任务链 The back-link field of the TSS and the NT (nested task) bit of the flag word to ...
- HDU_1548_A strange lift
题意:一部电梯(共top层),每一楼有一个数字k,在该层只能上k层或者下k层(up和down按钮),问从当前层到目标层按按钮的最小次数. 分析:广度优先搜索. 总结:初写BFS,仿照别人的代码,这方面 ...
- 搭建Cookie池
很多时候我们在对网站进行数据抓取的时候,可以抓取一部分页面或者接口,这部分可能没有设置登录限制.但是如果要抓取大规模数据的时候,没有登录进行爬取会出现一些弊端.对于一些设置登录限制的页面,无法爬取对于 ...
- 小程序wx:key = “{{*this}}”报错
解决方案:改为 wx:key = "*this"
- Linux:RHEL7图形界面转文字
1.7 Systemd初始化进程 Linux操作系统开机过程首先从BIOS开始→进入"Boot Loader"→加载系统内核→内核进行初始化→启动初始化进程.初始化进程作为系统第一 ...
- spring boot 传输数组类型数据
需要在参数加上@RequestBody注解 参考资料:https://blog.csdn.net/u012129558/article/details/51768985