写一个按数据元素升序建立单链表的c++程序
时间: 2024-09-12 13:02:28 浏览: 39
在C++中创建一个按数据元素升序建立单链表的程序,首先需要定义链表节点结构体,并包含一个整数值以及指向下一个节点的指针。以下是简单的步骤:
```cpp
#include <iostream>
// 定义链表节点结构体
struct Node {
int data;
Node* next;
};
// 插入新节点并保持升序排序
void insertSorted(Node** head, int value) {
if (*head == nullptr || (*head)->data > value) {
// 如果链表为空或者新值小于当前值,直接插入
Node* newNode = new Node();
newNode->data = value;
newNode->next = *head;
*head = newNode;
} else {
// 否则,在已存在的链表中找到合适位置插入
Node* current = *head;
while (current->next != nullptr && current->next->data < value) {
current = current->next;
}
newNode = new Node();
newNode->data = value;
newNode->next = current->next;
current->next = newNode;
}
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << "\n";
}
int main() {
Node* head = nullptr;
// 添加一些元素并保持升序
insertSorted(&head, 5);
insertSorted(&head, 2);
insertSorted(&head, 8);
insertSorted(&head, 1);
// 打印链表确认顺序
printList(head);
return 0;
}
```
在这个程序中,我们首先创建了一个空链表,然后添加元素时始终保持链表按照升序排列。当新值大于或等于链表中的最后一个元素时,才插入新节点。最后,我们提供一个打印链表的辅助函数来验证排序。
阅读全文