[英]C Linked list inserting element in a sorted way
嘿,我需要以一種排序的方式將元素插入到鏈表中。 每個元素都有一個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;
}
}
根參數是虛擬節點(NULL),而newbook參數是要插入的新元素。 我使用這種方法一一添加元素。
參數root是一個值,它是存儲在根中的地址。
我猜你的代碼。
linkedlist *root = NULL, *newbook;
while (...) { // or for( , , )
newbook = malloc(sizeof(linkedlist));
// edit newbook
insertABook(root, newbook);
:
:
至少有3種方式。
1. insertABook()返回鏈表*以存儲根。
root = insertABook(root, newbook);
2.將root更改為鏈表**。 我想這就是您想要的答案。
void insertABook(linkedlist **root, linkedlist *newbook) {
if (*root==NULL) {
*root=newbook;
}
else { // insert or append
linkedlist *next = *root;
:
:
呼叫者
insertABook(&root, newbook);
&root是root的地址。
root在源文件中是全局的。
static linkedlist *root = NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.