以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数
来源:互联网 发布:android打开移动数据 编辑:程序博客网 时间:2024/05/18 06:33
下面是单链表的数据结构
typedef struct LNode{ElemType data;struct LNode *next;}LNode,*Linklist;
1.以指针参数实现
void delete_x_1(LNode *head,ElemType x){//head为单链表头结点,删除结点的值为x LNode *l = head; LNode *p = head->next; while(p != null){ if(p->data == x){ l->next = p->next; free(p); } l = p; p = p->next; }}
这是最一般的方法,使用指针来实现。
2.以递归跟引用参数实现
void delete_x_2(Linklist &L,ElemType x){//为单链表头结点引用,删除结点的值为x LNode *p; if(L == null){ return; } if(L->data == x){ p = L; L = L->next; free(p); delete_x_2(L,x); }else{ delete_x_2(L->next,x); }}有些人认为直接free掉p结点会造成断链,实际上因为L为引用,是直接对原链表进行操作,因此不会断链。
1 0
- 以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数
- 2.2删除带头结点的L中所有值为x的结点
- 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
- 编写算法函数linklist delallx(linklist head, int x),删除带头结点单链表head中所有值为x的结点。
- 【Java】以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于等于x的结点之前
- 头插法,尾插法,创建单链表,然后删除所有结点值为x的结点
- 2.1删除不带头结点的单链表L中值为x的结点
- 从顺序表L中删除所有值为x的元素
- 链表分割 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以
- 设计一个递归算法,删除不带头结点的单链表中所有值为x的结点
- 函数的参数为引用和指针的区别
- 项目一--删除结点值为X的结点
- 每周数据结构【1】:不带头结点删除所有值为x的节点
- 9.2链表(四)——以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的节点之前
- 求二叉树中以x为值的根结点的子树的深度
- 交换函数的两种不同的实现方式------地址传递和引用参数
- 交换函数的两种不同的实现方式------地址传递和引用参数
- 向头指针为 L的有序单链表(从小到大有序)中插入一个结点,使插入后链表仍然有序
- PHP 操作redis 详细讲解转的
- Apache Maven 入门篇(下)
- Js中escape(),encodeURI()和encodeURIComponent()
- sqlMapConfig
- 关于内存分配的几个原则
- 以指针和引用两种参数实现删除单链表L中所有值为X的结点的函数
- GitHub详细教程
- S3C6410 之裸机程序烧写
- Erlang Application
- UML建模之时序图(Sequence Diagram)
- 【iOS知识学习】_iOS中Json解析的四种方法
- 点到平面的基本距离推导公式
- 【jquery前端开发】可调整的幻灯片(图片轮播)
- 回忆成都之行