C语言实现单链表节点的删除(带头结点)
2016-03-01 16:09
645 查看
我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中详细实现了如何在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码示例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode。删除类型有两种:
(1)删除某个位置pos的节点;
(2)判断x值是否在链表中,若存在则删除该节点;
核心代码如下:
(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++文件读写详解(ofstream,ifstream,fstream)
- C++内存管理
- C语言中switch语句的思考
- c++防止客户端多开巧妙代码
- C++ 虚函数表解析
- opencv error assertion failed,imread读到的总是空数据,Microsoft C++ 异常: 内存位置 0x0043f888 处的 cv::Exception。
- C语言中的存储类型
- 【C++11新特性】 C++11智能指针之weak_ptr
- C++ primer 第五版 中文版 练习 10.33
- 0.2 简单搭建C语言环境
- Java调用C/C++编写的第三方dll动态链接库(zz)
- 字符串最后一个单词的长度 C语言版本
- utilities——比较与排序规则(C++)
- C语言 字符串处理技巧(sscanf、strstr等用法)
- C语言——位操作
- C语言发展简介
- 0.1欢迎来到C语言的世界(教程介绍)
- C++发展简介
- C++中的Vector的用法