gpt4 book ai didi

C 对链表进行冒泡排序

转载 作者:行者123 更新时间:2023-11-30 17:21:46 24 4
gpt4 key购买 nike

尝试运行一个函数,该函数将对链接列表进行从最小到最大数字的冒泡排序。我不希望数据在链接列表中移动,而是让指针指向其他地方,以防每个链接需要保存大量数据。

在每个链接中,我都有一个 INTarrivalTime 字段,它将容纳一个整数值。该数字决定链接应位于列表中的位置。

我的程序目前似乎挂起,如果有人可以修复它,我将不胜感激,谢谢

冒泡排序函数

void bubbleSort(struct order *start)
{
int swapped, i;
processData *current = start;
processData *temp;
struct order *lptr = NULL;

/* Checking for empty list */
if (current == NULL)
printf("null \n");


do
{
swapped = 0;
current = start;

while (current->next != lptr)
{
if (current->arrivalTime > current->next->arrivalTime)
{
temp = current;
current = current->next;
current->next = temp;
swapped = 1;
}
current = current->next;
}
lptr = current;
}
while (swapped);
}

链接列表的结构

struct order 
{
int name;
int arrivalTime;
int quanta;
struct order * next;
};
typedef struct order processData;

最佳答案

交换单链表中的两个相邻项需要更改三个 next 指针。

如果顺序是 A --> B --> C --> D 并且将 BC 交换得到 A --> C --> B --> D 然后

A->next 需要指向 C 而不是 B
B->next 需要指向 D 而不是 C
C->next 需要指向 B 而不是 D

关于C 对链表进行冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com