2.编写主函数测试单链表的各种基本运算: (1)生成一个至少包含有5个元素的单链表,元素值由计算机输入 (2)在表中的第5个位置上插入元素”7” (3)删除表中的第6个元素 (4)显示(1)—(3)每一步的操作结果
时间: 2024-10-07 19:04:53 浏览: 41
数据结构 实验一:实现单链表各种基本运算的算法.doc
5星 · 资源好评率100%
在C++中,你可以创建一个简单的主函数来测试单链表的基本操作。首先,你需要定义一个节点结构体和单链表头指针。这里是一个示例:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* generateList(int n) {
ListNode* head = new ListNode(0);
ListNode* tail = head;
for (int i = 1; i <= n; ++i) {
tail->next = new ListNode(i);
tail = tail->next;
}
return head;
}
void insertAtPosition(ListNode*& head, int pos, int value) {
if (pos == 1) { // 插入到头节点
ListNode* newNode = new ListNode(value);
newNode->next = head;
head = newNode;
} else {
ListNode* current = head;
for (int i = 1; i < pos - 1 && current != nullptr; ++i)
current = current->next;
if (current != nullptr) {
ListNode* newNode = new ListNode(value);
newNode->next = current->next;
current->next = newNode;
}
}
}
void deleteElement(ListNode*& head, int pos) {
if (head == nullptr || pos <= 0) return;
if (pos == 1) { // 删除头节点
ListNode* temp = head;
head = head->next;
delete temp;
} else {
ListNode* current = head;
for (int i = 1; i < pos - 1 && current != nullptr; ++i)
current = current->next;
if (current != nullptr) {
ListNode* temp = current->next;
current->next = temp->next;
delete temp;
}
}
}
void displayList(ListNode* head) {
ListNode* curr = head;
while (curr != nullptr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
int main() {
int n, pos, value;
cout << "请输入链表长度(至少5): ";
cin >> n;
// 生成链表
ListNode* list = generateList(n);
cout << "原始链表: ";
displayList(list);
// 插入元素
cout << "请输入要在第5个位置插入的值: ";
cin >> value;
insertAtPosition(list, 5, value);
cout << "插入元素后的链表: ";
displayList(list);
// 删除元素
cout << "请输入要删除的元素位置: ";
cin >> pos;
deleteElement(list, pos);
cout << "删除元素后的链表: ";
displayList(list);
return 0;
}
```
在这个示例中,用户将被提示输入链表的初始长度、插入的位置以及删除的位置。程序会按照指令生成链表、插入元素、删除元素,并在每个步骤后展示链表的内容。注意,这个例子假设用户输入都是有效的。
阅读全文