【C语言】删除一个节点(仅一个)(单向物理链式结构)

来源:互联网 发布:java软件工程师培训班 编辑:程序博客网 时间:2024/06/05 14:32
/* * 单向物理链式结构演示 * 步骤:定义结构体->定义结构体变量->链接->写循环->用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;}
阅读全文
0 0
原创粉丝点击