直接在主函数里面写,链表冒泡排序不用函数的写法C++
时间: 2024-11-27 16:22:40 浏览: 8
链表的冒泡排序如果直接在主函数中编写,不需要额外定义函数,可以采用迭代的方式实现,因为链表不像数组可以直接访问元素,我们需要遍历整个链表。下面是一个简单的C++示例:
```cpp
#include <iostream>
using namespace std;
// 链表节点结构体
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
void bubbleSortLinkedList(ListNode* &head) {
if (head == nullptr || head->next == nullptr) return; // 如果链表为空或只有一个元素,无需排序
ListNode *temp = head;
bool swapped;
while (true) {
swapped = false;
for (ListNode *curr = temp; curr != nullptr && curr->next != nullptr; curr = curr->next) {
if (curr->val > curr->next->val) {
swap(curr->val, curr->next->val); // 交换节点值
swapped = true;
}
}
// 如果一次遍历未发生交换,则链表已经有序
if (!swapped) break;
temp = temp->next;
}
}
int main() {
// 创建链表并设置初始数据...
ListNode *head = createLinkedList(); // 这里假设有一个createLinkedList()函数创建链表
// 对链表进行冒泡排序
bubbleSortLinkedList(head);
// 打印排序后的链表
printLinkedList(head);
return 0;
}
```
在这个例子中,`bubbleSortLinkedList`函数直接对传入的头结点进行了冒泡排序操作。注意,由于链表遍历的特点,我们无法像数组那样轻松地检查是否完成排序,所以需要一个标志变量`swapped`来确定是否还有需要继续交换的情况。
阅读全文