1. 初始化链式存储线性表 2. 插入样本数据 3.遍历并打印所有数据 4. 逐个删除并打印、直到表空
时间: 2024-09-25 20:18:01 浏览: 38
初始化链式存储的线性表,通常涉及到创建一个新的节点作为表头,并将其指针设置为空。这是一个示例步骤:
1. 创建一个链表结构,例如`struct Node`,包含数据域`data`和指向下一个节点的指针`next`。
```c++
Node *head = nullptr; // 链表开始时是空的
```
插入样本数据:
2. 对于每个新的元素,你可以创建一个新的节点,然后将它链接到当前的头节点之后。如果这是第一次插入,`head`就是新节点;否则,创建的新节点`new_node`的`next`字段指向当前头节点。
```c++
void insert(int value) {
Node* newNode = new Node{value};
if (head == nullptr) {
head = newNode;
} else {
Node* current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = newNode;
}
}
```
遍历并打印所有数据:
3. 使用循环遍历链表,从头节点开始,每次迭代更新`current`指针,直到`current->next`为`nullptr`。
```c++
void printList() {
Node* current = head;
while (current != nullptr) {
cout << current->data << " ";
current = current->next;
}
cout << endl;
}
```
逐个删除并打印:
4. 删除节点时,需要处理两个情况:删除头节点或非头节点。若要删除的是头节点,直接将`head`指向下一个节点;非头节点则需找到前一个节点,使其`next`指向待删除节点的下一个。
```c++
void deleteAndPrint(Node** head, int target) {
if (*head && (*head)->data == target) {
Node* temp = *head;
*head = (*head)->next;
delete temp;
} else {
Node* current = *head;
Node* prev = nullptr;
while (current != nullptr && current->data != target) {
prev = current;
current = current->next;
}
if (current != nullptr) {
prev->next = current->next;
delete current;
}
}
// 如果链表还有内容,打印当前剩余部分
if (*head) {
printList();
}
}
```
阅读全文