输入10个整型数据,再输入要查找的数据,编程实现带头结点的单链表的按值查找,查找成功,返回其位置信息,查找失败,返回0。若有多个相同数据,则输出第一个数据所在位置要求: 完成带头结点的单链表的按值查找函数。用C++实现
时间: 2024-11-25 20:12:55 浏览: 3
数据结构查找操作
在C++中,你可以使用结构体表示链表节点,然后创建一个查找函数来实现按值查找。以下是一个简单的示例:
```cpp
#include <iostream>
// 链表节点定义
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 查找链表中特定值的函数
int searchInLinkedList(ListNode* head, int target) {
ListNode* current = head; // 初始化当前节点为头节点
// 遍历链表
for (int i = 1; current != nullptr; ++i) {
if (current->val == target) {
// 找到目标值,返回它的位置(从1开始计数)
return i;
}
current = current->next;
}
// 如果未找到目标值,返回0
return 0;
}
int main() {
// 创建一个带头结点的链表示例
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
head->next->next->next->next = new ListNode(2); // 含有重复值2
head->next->next->next->next->next = new ListNode(6);
int target;
std::cout << "Enter a number to search in the list: ";
std::cin >> target;
int position = searchInLinkedList(head, target);
if (position != 0) {
std::cout << "The target value (" << target << ") was found at position " << position << ".\n";
} else {
std::cout << "The target value (" << target << ") was not found.\n";
}
return 0;
}
```
这段代码定义了一个`ListNode`结构体用于构建链表,并实现了`searchInLinkedList`函数,该函数接受链表的头节点和目标值作为参数。它遍历链表,当找到匹配的目标值时,返回其位置。如果找不到,最后返回0。
在`main`函数中,我们创建了一个包含重复值的链表实例,并请求用户输入一个值进行查找。根据查找结果,我们会输出相应的消息。
阅读全文