C语言—链表的查找
来源:互联网 发布:女式腰带淘宝网 编辑:程序博客网 时间:2024/05/24 05:49
链表的查找的基本思路
查找功能是我认为在这些功能里最重要的那个,我们以后想要得到的插入和删除
,都是建立在链表的查找之上如果你想删除或者插入但是你却连位置都没有,这
就很尴尬了,所以链表查找我觉得挺重要的,也是挺难理解的,因为只要理解这
个后面的插入和删除功能,你自己很快就写出来了,接下来开始,我们应该想想
你想找到一个结构体,你拿什么找他? 只能使用它自己的成员,而且独一无二
,如果是学生管理系统是学生的学号,如果是坐标的管理系统呢就是独一无二的
坐标,所以参数你自己把握好,我这里写的是坐标管理系统,所以呢,我的参数
用的是坐标。我们先得想想查找这个函数需要哪些参数,首先应该有oldrows和oldcols。
这里还不顾,因为是在你这个链表上操作,那么你先得把链表给我对吧。所以有
三个参数(point head, int oldrows, int oldcols)。现在我们考虑如何找,从
前往后用一个指针分别指向链表的每一个结构体判断oldrows和oldcols是否相等
但是这里注意了,我们不管以后的插入删除听起来是想要这个点的位置,其实最
重要的是找到他的前驱结点举个例子删除功能,因为找到它的前驱结点才能把它
"架空",修改掉前驱结点的next值,然后才可以大方的把它的空间释放。后面会提
到。所以我们知道现在呢我们还需要有一个指针来记录它的前驱结点,现在我们的
思路基本明确了,一个负责查找的指针,一个负责记录前驱结点的指针。
图中红箭头是开始循环的时候,蓝箭头是循环一次后的结果。
for (p = head.next; p && ((p->cols != oldcols) || (p->rows != oldrows)); p = p->next)
==>当第一个就是我们要找的有效节点,此时q指针为NULL
==>第一个以后所有找到有效节点,此时q的指针指向该节点的前驱结点。
==>没找到此时指针指向末节点。
程序的实现
point *found(point head, int oldrows,int oldcols){point *p;point *q = NULL;for (p = head.next; p && ((p->cols != oldcols) || (p->rows != oldrows)); p = p->next)q = p;return q;//若指定点为第一个,返回值为NULL//若指定点为除了第一个以外的其他节点,则该函数的返回值为目标的前一个指定点。//若指定点不存在,则该函数的返回值指向末节点。}
- C语言—链表的查找
- 链表的查找和插入(c语言)
- C语言---双向链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- [C语言]查找链表的中间元素
- C语言的二分法查找
- C语言查找的应用
- C语言的排序、查找
- C语言顺序表的插入、删除、查找操作实现
- C语言实现顺序表的初始化,插入,删除,查找
- C语言——字符串查找字符的两个函数
- C语言:动态链表的建立,查找,删除,插入功能的实现
- C语言实现带头结点的链表的创建、查找、插入、删除
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C语言链表的创建、插入、查找、删除、清空操作
- 【C语言】查找链表的中间节点及倒数第K个节点
- 查找单链表的中间节点,要求只能遍历一次链表(C语言)
- C语言实现链表的创建,初始化,插入,删除,查找
- 2016年终总结
- IDEA 工具tomcat服务器配置
- revtex4-1使用说明
- Android M(6.0)运行时权限申请及遇到的坑
- host无法修改解决办法
- C语言—链表的查找
- 勿忘初心,纵情向前
- 微博数据入库到sqlserver
- 路由器DDNS配置
- CCF-CSP 201612-4压缩编码解题报告
- 51 Nod 1289 大鱼吃小鱼(栈,模拟)
- Zookeeper安装与部署
- oracle忘记密码怎么办?
- ucloud时间和aws时间不同步的问题