struct student{ int num; char name[20]; int sex;//sex=0女、sex=1男 int age; student *next; };以这个结构体组成的有头结点的链表冒泡排序
时间: 2024-04-30 22:21:26 浏览: 73
以下是使用冒泡排序对有头结点的链表进行排序的示例代码:
```c++
void bubbleSort(student *head) {
int len = 0;
student *p = head->next;
while (p != NULL) {
len++;
p = p->next;
}
for (int i = 0; i < len - 1; i++) {
p = head->next;
for (int j = 0; j < len - i - 1; j++) {
if (p->num > p->next->num) {
student *temp = p->next;
p->next = temp->next;
temp->next = p;
head->next = temp;
p = temp;
}
p = p->next;
}
}
}
```
该代码中,首先计算出链表中元素的个数 len。然后使用两重循环,外层循环控制排序的轮数,内层循环负责每一轮中相邻元素的比较和交换。在内层循环中,如果相邻元素的顺序不正确,就交换这两个元素的位置。需要注意的是,如果第一个元素被交换,那么头结点的指针需要重新指向链表的第一个元素。
以上是针对结构体中 num 字段进行排序的代码。如果需要根据其他字段进行排序,可以通过修改比较语句来实现。
阅读全文