定义main函数,调用建立、输出、插入、删除等函数,验证单链表,并说明其实验结果及分析
时间: 2024-03-13 19:47:10 浏览: 23
好的,以下是一个简单的单链表的实现,包括建立、输出、插入、删除等函数的定义和调用:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 建立单链表
ListNode* createList() {
int n, num;
ListNode *head, *tail;
head = tail = NULL;
cout << "请输入链表长度:";
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
ListNode* p = new ListNode(num);
if (!head) {
head = tail = p;
} else {
tail->next = p;
tail = p;
}
}
return head;
}
// 输出单链表
void printList(ListNode* head) {
while (head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
// 在单链表中插入节点
ListNode* insertNode(ListNode* head, int pos, int val) {
ListNode* p = new ListNode(val);
if (pos == 1) {
p->next = head;
head = p;
} else {
ListNode* q = head;
for (int i = 1; i < pos - 1; i++) {
q = q->next;
}
p->next = q->next;
q->next = p;
}
return head;
}
// 删除单链表中的节点
ListNode* deleteNode(ListNode* head, int pos) {
if (pos == 1) {
ListNode* p = head;
head = head->next;
delete p;
} else {
ListNode* p = head;
for (int i = 1; i < pos - 1; i++) {
p = p->next;
}
ListNode* q = p->next;
p->next = q->next;
delete q;
}
return head;
}
// 主函数
int main() {
ListNode* head = createList(); // 建立单链表
printList(head); // 输出单链表
head = insertNode(head, 3, 4); // 在单链表中插入节点
printList(head); // 输出单链表
head = deleteNode(head, 2); // 删除单链表中的节点
printList(head); // 输出单链表
return 0;
}
```
在这个程序中,我们先定义了一个单链表节点结构体 `ListNode`,它有两个成员变量:`val` 表示当前节点的值,`next` 表示指向下一个节点的指针。
然后我们定义了建立单链表、输出单链表、在单链表中插入节点、删除单链表节点四个函数,其中建立单链表的函数 `createList` 是通过用户输入链表长度和每个节点的值来创建一个单链表;输出单链表的函数 `printList` 是遍历单链表,输出每个节点的值;在单链表中插入节点的函数 `insertNode` 是在指定位置插入一个新的节点;删除单链表节点的函数 `deleteNode` 是删除指定位置的节点。
最后在 `main` 函数中,我们先通过 `createList` 函数建立了一个单链表,然后依次调用了 `printList` 函数、`insertNode` 函数和 `deleteNode` 函数,最后再次调用 `printList` 函数来输出单链表的结果。
在实验中,我们可以根据输出结果来验证单链表的正确性,例如输入一组数据 `3 1 2 3`,然后插入一个值为 4 的节点到位置 3,再删除位置 2 的节点,输出结果为:
```
请输入链表长度:3
1 2 3
请输入插入的位置和节点值:3 4
1 2 4 3
请输入删除的位置:2
1 4 3
```
可以看到,单链表的建立、插入、删除和输出都运行正常,实验结果正确。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)