用C++写一个链表程序
时间: 2023-11-24 14:07:39 浏览: 87
以下是一个简单的单向链表程序示例:
```c++
#include <iostream>
using namespace std;
// 链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 打印链表
void printList(ListNode* head) {
ListNode* cur = head;
while (cur != NULL) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
int main() {
// 创建链表
ListNode* head = new ListNode(1);
ListNode* node1 = new ListNode(2);
ListNode* node2 = new ListNode(3);
ListNode* node3 = new ListNode(4);
head->next = node1;
node1->next = node2;
node2->next = node3;
// 遍历链表
printList(head);
// 插入节点
ListNode* newNode = new ListNode(5);
newNode->next = node2->next;
node2->next = newNode;
// 遍历链表
printList(head);
// 删除节点
node1->next = node2->next;
delete node2;
// 遍历链表
printList(head);
// 释放内存
delete head;
delete node1;
delete node3;
return 0;
}
```
该程序中,我们定义了一个链表节点结构体 `ListNode`,它包含一个整数值 `val` 和一个指向下一个节点的指针 `next`。我们通过创建节点的方式来创建链表,每个节点的 `next` 指针指向下一个节点。遍历链表时,从头节点开始,沿着每个节点的 `next` 指针依次遍历,打印节点的值。插入节点时,先将新节点的 `next` 指针指向插入位置的下一个节点,再将插入位置的 `next` 指针指向新节点。删除节点时,先将删除位置的前一个节点的 `next` 指针指向删除位置的下一个节点,再释放删除节点的内存。最后,释放链表的内存。
阅读全文