gpt4 book ai didi

c - 在c中使用链表存储值后以 `ascending`或 `descending`顺序显示输出

转载 作者:行者123 更新时间:2023-11-30 16:15:08 26 4
gpt4 key购买 nike

我使用用户输入存储五个不同的值。并按照从命令提示符插入的方式进行显示,现在我想在显示过程中将输出组织为升序降序顺序。我搜索了这个,但我得到了更复杂的例子。我的代码非常简单。我在学习。到目前为止,我已经做了什么,如果我可以在我的代码中实现升序降序顺序,那么这对我来说会更容易理解。如果可能的话,有人可以帮助我在我现有的代码中做到这一点吗?

#include <stdio.h>

struct list{
int value;
struct list *next;
};

int main(){

struct list list1[5], *c;
int i = 0;
for(i = 0; i < 5; i++){
printf("Enter value of list %d = ", i);
scanf("%d", &list1[i].value);
}
for(i = 0; i < 4; i++){
list1[i].next = &list1[i+1];
}
list1[4].next = NULL;

c = &list1[0];
while(c != NULL){
printf("List value: %d\n", c->value);
c = c->next;
}
return 0;
}

最佳答案

… implement ascending or descending order in my code … by changing the next pointers accordingly

您可以使用一种插入排序来完成此操作,方法是遍历未排序的列表并构建一个新列表,重新连接 next按排序顺序的指针:

    struct list *head = NULL, *nc;  // new (initially empty) list starts at head
for (c = list1; c; c = nc) // go through original list
{
struct list **pred = &head, *d;
while ((d=*pred) && c->value > d->value) pred = &d->next; // find pos.
nc = c->next; // get next element (before overwritten)
c->next = d, *pred = c; // insert element into sorted list
}

按升序排序;对于降序,更改 >< .

关于c - 在c中使用链表存储值后以 `ascending`或 `descending`顺序显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57259858/

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