/** * 用链表实现 王道P40 T2 * * ①算法思想: * 开始设置指针 p 用于保存 L -> next , pre 用于保存 L (pre 用来标记 p 前驱),开始依次遍历, * 当 p 的 data 满足条件时,p 的前驱 pre 指向 p 然后释放 p ,并且新的 p 指向 pre 的后继, * 若不满意,则 pre 和 p 向后移动一个,继续遍历,直到 p 为空结束。 * * ②数据结构: * typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; * * ③算法设计 */ #include <stdio.h> #include <iostream> typedef struct LNode{ int data; struct LNode* next; }LNode,*LinkList; void DeleteX(LinkList &L,int x){ LinkList p = L -> next,pre = L;//插入和删除链表时,必须保持前驱 while(p){//当p不是空的时候 if(p -> data == x){ pre -> next = p -> next; free(p); p = pre -> next; }else{ pre = p; p = p -> next;//p始终保持在pre的前面 } } }