|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
当有两个结点的数据域信息都为item时候,只返回第一个的地址,如何改进。
- //从线性链表的第一个位置开始,从前向后依次比较当前链结点的数据域内容是否与给定值item匹配
- //若查找成功,算法返回被查找结点的地址,否则返回NULL
- //指针变量p依次“后移”
- LinkList FIND(LinkList list ,ElemType item)
- {
- LinkList p = list;
- while (p!= NULL&&p->data!=item)
- {
- p = p->link;
- }
- return p;
- }
复制代码
本帖最后由 1005204767 于 2018-11-6 13:39 编辑
可以用一个数组(或者链表)把所有匹配值都保存起来 - #define MAX_NUM 10
- LinkList *FIND(LinkList list ,ElemType item)
- {
-
- LinkList p = list;
- LinkList match[MAX_NUM]; //用来存放所有匹配的结点
- int i = 0;
- while(i < MAX_NUM ) match[i++] = NULL;//将match内所有元素初始化为NULL,方便后续的遍历操作
- i = 0;
- while (p!= NULL)//直到遍历到最后一个结点
- {
- if(p->item == item)
- match[i++] = p;
- p = p->link;
- }
- return match;
- }
复制代码
|
|