设计一个递归算法,删除不带头结点的单链表中所有值为x的结点
2017-05-28 22:29
1086 查看
设计一个递归算法,删除不带头结点的单链表中所有值为x的结点
具体的代码如下:
void Del_X_3(LinkList &L,ElemType x){
LNode *p; //p指向待删除结点,
if(L==NULL) //递归出口 return ; if(L->data==x) { p=L; L=L->next; //删除L,并让L指向下一结点 free(p); Del_X_3(L,x); }else { Del_X_3(L->next,x);//递归调用 }
}
PS:对于这个算法,我最不能理解的是它和普通的算法相比,就是没有让要删除的L节点指向要删除节点的下一个节点,实际上这是因为我们要删除某个节点的时候,传入的是要删除节点的上一个节点,也就是说传入的是L->next,然后删除的时候就相当于执行了L->next=L->next->next;
这个我是参考了网上的一片文章:http://www.cnblogs.com/raby/p/5886714.html
相关文章推荐
- 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
- 数据结构:设有一个不带头结点的单链表L,设计两个递归算法,del(L,x)删除单链表L中第一个值为x的节点,delall(L,x)删除单链表L中的最小节点值。
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 设ha和hb分别是两个带头节点的费递减有序单链表的表头指针,设计以算法,将将两个有序链表合成一个非递减的有序单链表,该程序以以前发表的博客中的链表中的区别在与该立案表带有头结点
- 不带头结点的单链表删除任意一个节点
- 有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,
- 编写算法函数linklist delallx(linklist head, int x),删除带头结点单链表head中所有值为x的结点。
- 每天一个小程序(2)——带头结点的链表的创建以及插入和删除
- 给定一棵二叉树,设计一个算法,创建含有某一深度上所有结点的链表(比如:若一棵树的深度为D,则会创建出D个链表)
- 假设以不带头结点的循环链表表示队列,并且只设一个指针指向队尾结点,但不设头指针。试设计相应的入队和出队的算法
- 续:一个带头结点的单链表反转(递归)
- 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。
- 给定链表的头指针和一个结点指针,在O(1) 时间删除该结点
- LinkLists 删除链表中的一个给定指针的结点 @CareerCup
- 不带头结点的链表操作----插入删除打印
- 删除带头结点的双循环链表p中第i个结点
- 对一个不带头结点的单链表进行逆置
- 设计一个整型链表类list,能够实现链表节点的插入、删除、以及链表数据的输出操作。
- 在不带头结点的单链表中删除特定元素
- 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。