编写单链表的创建、输出、插入、删除和主函数的代码
时间: 2023-08-11 14:05:29 浏览: 48
好的,我将给出 C++ 语言实现单链表的创建、输出、插入、删除和主函数的代码,希望能对你有所帮助。
```cpp
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 创建单链表
ListNode* createList() {
int n, x;
ListNode* head, * p, * q;
head = new ListNode(-1); // 创建头节点
p = head;
cout << "请输入链表长度: ";
cin >> n;
for (int i = 1; i <= n; i++) {
cout << "请输入第" << i << "个节点的值: ";
cin >> x;
q = new ListNode(x);
p->next = q;
p = q;
}
return head->next;
}
// 输出单链表
void printList(ListNode* head) {
ListNode* p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
// 在指定位置插入节点
void insertNode(ListNode* head, int pos, int val) {
ListNode* p = head;
for (int i = 1; i < pos; i++) {
p = p->next;
}
ListNode* q = new ListNode(val);
q->next = p->next;
p->next = q;
}
// 删除指定位置的节点
void deleteNode(ListNode* head, int pos) {
ListNode* p = head;
for (int i = 1; i < pos; i++) {
p = p->next;
}
ListNode* q = p->next;
p->next = q->next;
delete q;
}
int main() {
ListNode* head = createList();
printList(head);
insertNode(head, 3, 10);
printList(head);
deleteNode(head, 2);
printList(head);
return 0;
}
```
在上述代码中,`ListNode` 是链表节点的结构体,包含节点的值 `val` 和指向下一个节点的指针 `next`。`createList` 函数用于创建单链表,通过循环输入节点的值并依次连接节点,最终返回链表头节点的指针。`printList` 函数用于输出链表中各节点的值。`insertNode` 函数用于在指定位置插入新节点,首先找到指定位置的节点,然后连接新节点并修改指针。`deleteNode` 函数用于删除指定位置的节点,首先找到指定位置的前一个节点,然后连接后一个节点并删除指定节点。
在主函数中,我们首先通过 `createList` 函数创建了一个单链表,并通过 `printList` 函数输出了链表中各节点的值。接着,我们调用了 `insertNode` 函数插入了一个值为 10 的新节点,并再次使用 `printList` 函数输出了链表中各节点的值。最后,我们调用了 `deleteNode` 函数删除了链表中第二个节点,并使用 `printList` 函数输出了链表中各节点的值。