01 实现单链表链式存储结构,并利用文件中的内容初始化Q2 实现单链表的顺序输出、获取长度、查找、插入、删除O3 删除所有score低于s的元素,然后顺序输出其他元素 04 倒序输出链表内容 05 将以上单链表改为双链表,并倒序输出链表内容
时间: 2024-10-14 17:07:25 浏览: 40
01. 单链表的链式存储结构通常包含节点数据和指向下一个节点的指针。在C++中,可以这样表示:
```cpp
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {} // 构造函数
};
```
为了从文件中初始化链表,首先读取文件内容,将每个整数值解析并创建一个新的节点,然后连接它们形成链表。
02. 对于单链表的操作:
- 顺序输出:遍历链表打印节点值。
- 获取长度:通过遍历计算节点数。
- 查找:从头开始逐个比较节点值。
- 插入:找到目标位置后,修改next指针。
- 删除:找到待删除节点,更新前一个节点的next指针。
03. 删除操作示例:
```cpp
void removeElements(ListNode*& head, int s) {
ListNode* curr = head;
while (curr != nullptr && curr->val < s) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
if (curr == nullptr) {
head = nullptr; // 如果链表全部删除,则设置新的头
}
}
```
之后按顺序输出剩余节点。
04. 倒序输出链表内容:
遍历链表的同时保存每个节点到栈里,最后弹出栈元素即可。
05. 改为双链表,增加prev指针:
```cpp
struct DoublyListNode {
int val;
DoublyListNode* prev;
DoublyListNode* next;
DoublyListNode(int x) : val(x), prev(nullptr), next(nullptr) {}
};
```
倒序输出双链表内容需要从尾部开始遍历。
阅读全文