用c++一段完整程序实现链表的初始化、插入、删除、打印、销毁、
时间: 2023-07-03 15:19:38 浏览: 76
好的,以下是一段完整的 C++ 程序,实现链表的初始化、插入、删除、打印、销毁操作:
```c++
#include <iostream>
using namespace std;
// 定义链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 初始化链表
ListNode* initList() {
ListNode* head = new ListNode(0);
return head;
}
// 插入节点
void addNode(ListNode* head, int val) {
ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
ListNode* newNode = new ListNode(val);
p->next = newNode;
}
// 删除节点
void deleteNode(ListNode* head, int val) {
ListNode* p = head->next;
ListNode* pre = head;
while (p != NULL) {
if (p->val == val) {
pre->next = p->next;
delete p;
break;
}
pre = p;
p = p->next;
}
}
// 打印链表
void printList(ListNode* head) {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
// 销毁链表
void destroyList(ListNode* head) {
ListNode* p = head;
while (p != NULL) {
ListNode* tmp = p;
p = p->next;
delete tmp;
}
}
int main() {
// 初始化链表
ListNode* head = initList();
// 插入节点
addNode(head, 1);
addNode(head, 2);
addNode(head, 3);
// 打印链表
printList(head);
// 删除节点
deleteNode(head, 2);
// 打印链表
printList(head);
// 销毁链表
destroyList(head);
return 0;
}
```
以上程序中,我们定义了一个链表结构体 `ListNode`,包含一个整型变量 `val` 和一个指向下一个节点的指针 `next`。然后我们实现了链表的初始化、插入、删除、打印、销毁等操作。在 `main` 函数中,我们演示了如何使用这些操作来创建链表、添加节点、删除节点、打印链表、销毁链表等。