gpt4 book ai didi

C 链表按排序方式插入元素

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

嘿,我需要以排序的方式将一个元素插入到链表中。每个元素都有 isbn,我需要用它来对链表进行排序。它的工作原理是因为它在头部插入最小的元素,但仅此而已,其余元素似乎以随机方式排序。这是我的代码

void insertABook(linkedlist *root, linkedlist *newbook)
{
if ((root==NULL) && (root->ptr==NULL))
{
root->ptr=newbook;
}
else
{
linkedlist *next = root;
while((next->ptr != NULL) && (next->isbn < newbook->isbn))
{
next = next->ptr;
}
newbook->ptr=next->ptr;
next->ptr=newbook;
}
}

root参数是虚拟节点(NULL),newbook参数是要插入的新元素。我使用这种方法一一添加元素。

最佳答案

参数根是一个值,它是存储在根中的地址。
我猜你的代码。

    linkedlist *root = NULL, *newbook;
while (...) { // or for( , , )
newbook = malloc(sizeof(linkedlist));
// edit newbook
insertABook(root, newbook);
:
:

至少有3种方式。
1. insertABook()返回linkedlist*来存储根。

        root = insertABook(root, newbook);

2.将根更改为链表**。我想这就是你想要的答案。

void insertABook(linkedlist **root, linkedlist *newbook) {
if (*root==NULL) {
*root=newbook;
}
else { // insert or append
linkedlist *next = *root;
:
:

来电者

        insertABook(&root, newbook);

&root 是根的地址。

  • root 在源文件中是全局的。

    static linkedlist   *root = NULL;
  • 关于C 链表按排序方式插入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305220/

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