L是带头结点的单链表的头指针,e是要查找元素值,如果e在单链表中存在 此函数返回其序号(序号从 1开始);否则,返回 0,试编写算法实现此函数。(10
时间: 2024-03-10 18:49:14 浏览: 69
数据结构算法-习题-答案-带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点注意不设头指针.docx
5星 · 资源好评率100%
以下是一个可能的实现方式:
```
int findInLinkedList(Node* L, int e) {
int index = 1;
Node* p = L->next; // 从第一个结点开始查找
while (p != NULL) {
if (p->data == e) {
return index; // 找到了,返回序号
}
p = p->next;
index++;
}
return 0; // 没找到,返回 0
}
```
解释一下上面的实现方式:
- 首先定义一个 `index` 变量来记录当前结点的序号,初始值为 1。
- 然后定义一个指针 `p` 指向链表的第一个结点(即头结点的下一个结点)。
- 进入循环,如果 `p` 指向的结点的值等于要查找的值 `e`,那么就说明找到了,返回当前序号 `index`。
- 否则,将指针 `p` 后移一个结点,将序号 `index` 加 1。
- 继续循环直到找到了或者遍历完了整个链表。
- 最后如果还没有找到,说明 `e` 不在链表中,返回 0。
阅读全文