单链表的查找代码
时间: 2023-07-10 07:13:52 浏览: 46
以下是基于 C 语言实现的单链表按值查找和按索引查找的代码示例:
```c
// 定义单链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
/**
* 按值查找单链表中第一个值为给定值的节点
* @param head 单链表头节点
* @param val 给定值
* @return 返回第一个值为给定值的节点,若没有找到则返回 NULL
*/
ListNode* searchByValue(ListNode* head, int val) {
ListNode* cur = head;
while (cur != NULL && cur->val != val) {
cur = cur->next;
}
return cur;
}
/**
* 按索引查找单链表中第 k 个节点的值
* @param head 单链表头节点
* @param k 索引值,从 1 开始计数
* @return 返回第 k 个节点的值,若 k 超出链表长度则返回 -1
*/
int searchByIndex(ListNode* head, int k) {
if (k <= 0) {
return -1;
}
ListNode* cur = head;
int i = 1;
while (cur != NULL && i < k) {
cur = cur->next;
i++;
}
if (cur == NULL) {
return -1;
}
return cur->val;
}
```
需要注意的是,以上代码仅为示例,实际使用时需要根据具体场景进行修改和完善。