链表冒泡排序不用函数的写法C++
时间: 2024-11-27 18:22:03 浏览: 6
DuLinkBubbleSort 双向链表实现冒泡排序
链表冒泡排序不使用函数的写法可以在C++中通过直接操作链表节点实现,因为链表不像数组那样可以直接访问元素,我们只能遍历节点。以下是简单的冒泡排序算法应用于单向链表的例子:
```cpp
#include <iostream>
struct Node {
int data;
Node* next;
};
void bubbleSort(Node** head) {
if (!(*head)) return; // 空链表无需排序
Node* temp = *head;
Node* lastSorted = nullptr;
while (temp != nullptr && temp->next != nullptr) {
for (Node* curr = temp; curr->next != nullptr; curr = curr->next) {
if (curr->data > curr->next->data) {
std::swap(curr->data, curr->next->data); // 交换相邻的两个节点值
}
}
if (lastSorted == nullptr || temp->data <= lastSorted->data) break; // 如果一轮没有发生交换,链表已经有序
lastSorted = temp; // 更新最后一个已排序的节点
temp = temp->next; // 移动到下一轮的起始位置
}
}
// 测试代码
int main() {
// 创建链表并填充数据...
Node* head = createLinkedList(); // 自定义函数创建链表
bubbleSort(&head);
printLinkedList(head); // 打印排序后的链表
return 0;
}
```
在这个例子中,`bubbleSort`函数接受头结点的指针作为参数,并直接在链表上进行排序。注意,这只是一个基本示例,实际应用中可能需要处理链表为空、链表只有一个元素等边界情况。
阅读全文