在有序链表中插入数据c++代码
时间: 2024-10-14 18:01:32 浏览: 32
在C++中,你可以使用`std::list`容器来实现有序链表,因为它本身就支持自动排序。如果你想手动维护一个自定义的有序链表结构,可以创建一个`Node`类并实现比较函数来保证节点的顺序。下面是一个简单的例子:
```cpp
#include <iostream>
#include <list>
// 定义一个节点类
class Node {
public:
int data;
Node* next;
Node(int value) : data(value), next(nullptr) {}
};
// 自定义排序规则(这里假设我们按照升序排列)
bool compareNodes(Node* a, Node* b) {
return a->data < b->data;
}
// 向有序链表中插入数据
void insertIntoSortedList(Node*& head, int value) {
// 如果链表为空或新值小于头节点,将新节点设为头
if (head == nullptr || value < head->data) {
head = new Node(value);
} else {
// 找到正确的插入位置
Node* current = head;
while (current->next != nullptr && current->next->data > value) {
current = current->next;
}
// 插入新节点
current->next = new Node(value);
}
}
int main() {
// 创建一个空链表
Node* listHead = nullptr;
// 插入一些数据
insertIntoSortedList(listHead, 5);
insertIntoSortedList(listHead, 2);
insertIntoSortedList(listHead, 8);
insertIntoSortedList(listHead, 1);
// 遍历并打印链表
Node* temp = listHead;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
return 0;
}
```
在这个示例中,`insertIntoSortedList`函数会保持链表中的元素按升序排列。
阅读全文