用头插法建立单链表 首先用头插法建立一个长度为10的带头结点的单链表,值任意;然后遍历此单链表,将10个元素的值在屏幕上输出(简化起见,假设数据元素类型为int类型)。实现查找某个位置的元素,并输出结果。
时间: 2024-09-26 22:06:52 浏览: 8
头插法(也称为首部插入)是指在单链表的头部添加新节点的操作。下面是使用C++创建一个长度为10的带头结点的单链表,以及遍历、输出元素和查找元素的步骤:
```cpp
#include <iostream>
// 定义单链表节点结构体
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
// 创建长度为10的单链表
ListNode* createLinkedList(int count, int value = 0) {
ListNode* head = new ListNode(value); // 带头结点
for (int i = 1; i < count; ++i) {
ListNode* newNode = new ListNode(value);
head->next = newNode;
head = newNode;
}
return head;
}
// 遍历并输出链表中的所有元素
void printList(ListNode* head) {
ListNode* current = head;
while (current != nullptr) {
std::cout << current->val << " ";
current = current->next;
}
std::cout << "\n";
}
// 查找指定位置的元素
int findElement(ListNode* head, int position) {
if (position <= 0 || position > 10) {
std::cout << "Position out of range.\n";
return -1; // 返回无效索引或错误信号
}
ListNode* current = head;
for (int i = 1; i <= position; ++i) {
current = current->next;
}
return current->val; // 如果找到,返回该位置的元素值
}
int main() {
// 创建长度为10的单链表
ListNode* list = createLinkedList(10);
// 输出链表元素
printList(list);
// 查找第5个元素
int elementAtFive = findElement(list, 5);
if (elementAtFive != -1) {
std::cout << "Element at position 5: " << elementAtFive << "\n";
}
// 清理内存
ListNode* temp = list;
while (temp != nullptr) {
ListNode* nextTemp = temp->next;
delete temp;
temp = nextTemp;
}
list = nullptr;
return 0;
}
```
在这个例子中,我们首先创建了一个长度为10的链表,每个节点值默认为`value`。接着,我们定义了`printList`函数用于遍历并打印链表,`findElement`函数用于查找指定位置的元素。在`main`函数中,我们执行了这些操作。
运行这段程序后,你会看到打印出的链表元素以及第5个元素的值(如果存在的话)。记得清理链表时释放已分配的内存。