C++数据结构链表基本操作示例过程
链表是一种重要的数据结构,C++中链表的操作是非常常见的,下面我将详细介绍C++中链表的基本操作,包括创建链表、插入节点、删除节点和遍历链表等。
创建链表
首先,需要创建一个链表结构体,并定义节点类型struct Node,其中包含元素数据及下一个节点的指针。
struct Node {
int data;
Node* next;
};
创建一个链表的基本操作就是定义一个头节点,然后以此为基础,一步步地添加新节点,直到链表构建完成。示例代码如下:
Node* head = NULL; // 定义头节点
Node* tail = NULL; // 定义尾节点
// 创建新节点,插入到链表尾部
void AddNode(int val) {
Node* node = new Node();
node->data = val;
node->next = NULL;
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
插入节点
在链表中插入一个节点需要先找到该节点的位置,然后在前一个节点的next指针处插入新节点即可。如果需要插入头节点,那么head指针需要指向新节点。
// 在指定位置插入新节点
void InsertNode(int pos, int val) {
if (pos < 0) return;
Node* node = new Node();
node->data = val;
node->next = NULL;
int i = 0;
Node* prev = head;
while (prev && i < pos-1) {
prev = prev->next;
i++;
}
if (prev == NULL) {
head = node;
} else {
node->next = prev->next;
prev->next = node;
}
}
删除节点
删除节点需要先找到该节点的位置,然后将前一个节点的next指针指向后一个节点。
// 删除指定位置的节点
void DeleteNode(int pos) {
if (pos < 0 || head == NULL) return;
int i = 0;
Node* prev = head;
while (prev && i < pos-1) {
prev = prev->next;
i++;
}
if (prev == NULL || prev->next == NULL) return;
Node* node = prev->next;
prev->next = node->next;
delete node;
}
遍历链表
遍历链表需要从头节点开始逐个遍历,直到最后一个节点。
// 遍历链表
void Traverse() {
Node* current = head;
while (current != NULL) {
cout << current->data << " ";
current = current->next;
}
}
示例说明
示例一:
在一个空链表中依次插入元素1、2、3,然后遍历整个链表。
AddNode(1);
AddNode(2);
AddNode(3);
Traverse(); // 输出: 1 2 3
示例二:
在一个有元素1、2、3的链表中,删除第二个元素,然后在其后面插入元素4,最后遍历整个链表。
DeleteNode(1); // 删除第二个元素
InsertNode(1, 4); // 在第二个元素后面插入元素4
Traverse(); // 输出: 1 4 3
以上就是C++数据结构链表基本操作示例过程的完整攻略,如果有不理解的地方可以随时问我。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++数据结构链表基本操作示例过程 - Python技术站