【C语言】删除一个节点(仅一个)(单向物理链式结构)
2017-08-06 18:49
330 查看
/* * 单向物理链式结构演示 * 步骤:定义结构体->定义结构体变量->链接->写循环->用if去除尾部,对剩余的进行处理 * 提示: 处理单一节点的时候只需处理p_mid即可,处理某个位置的时候处理p_first和p_mid中间的位置 * */ #include <stdio.h> typedef struct node { int num; struct node *p_next; }node; int main() { node head = {0}, tail = {0}, node1 = {20}, node2 = {40}, node3 ={60}, node4 = {50}; node *p_node = NULL; head.p_next = &node1; node1.p_next = &node2; node2.p_next = &node3; node3.p_next = &tail; /************************************************************************************ * 删除一个节点 ************************************************************************************/ for(p_node = &head; p_node != &tail; p_node = p_node->p_next) { node *p_first = p_node; node *p_mid = p_first->p_next; node *p_last = p_mid ->p_next; if(p_mid != &tail && p_mid->num == 40) {//当p_mid->num的值和要删除的值相等时删除,特殊情况:链路中没有要删除的值,但是这个值正好和尾节点里的值相等时,尾节点就被删除了 p_first->p_next = p_last;//此方法只能删除一个节点 break; } } for(p_node = &head; p_node != &tail; p_node = p_node->p_next) { node *p_first = p_node; node *p_mid = p_first->p_next; node *p_last = p_mid->p_next; if(p_mid != &tail) { printf("%d ", p_mid->num); } } printf("\n"); return 0; }
相关文章推荐
- 【C语言】从小到大插入新节点(链式物理结构)
- 【C语言】循环添加节点(链式物理结构)
- 1.01一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
- 一个单向链表,只知道某个节点的指针p,但是p不是尾节点,请编程删除节点p.
- RAC结构删除一个节点并删除数据库软件的解决方案
- 【C语言】删除任意一个节点n(不知道头结点,且所删节点既不是头结点也不是尾节点)
- 今天开始学Java 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
- 单向链表之删除节点(C语言实现)
- 13:在O(1)时间内删除单向链表中的一个节点
- 删除单向链表中的某一个节点
- C语言:【单链表】删除一个无头单链表的非尾节点
- N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。 请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。c语言编程【22题】
- 给定一个单向链表,目前已经有一个指针,指向某一个节点(记作A),现在要删除这个节点A,如何操作。
- 删除单向链表中的某一个节点
- 【数据结构】单向线性链式物理结构list
- C语言:【单链表】删除一个无头单链表的非尾节点
- 单向链表在O(1)时间内删除一个节点
- 链式物理结构(动态分配节点)
- 单向链表在O(1)时间内删除一个节点
- 一个单向链表,不知道头节点,一个指针指向其中一个节点,问如何删除这个指针指向的节点?