簡體   English   中英

在C中訂購鏈表的問題

[英]Problems ordering a linked list in C

我在嘗試從最小到最大排序鏈表時遇到問題,代碼是:

struct nodo *orderList (struct nodo *p) {

struct nodo *head=p;
struct nodo *min=p;
int *tmp=NULL;

while (min != NULL) {
    p = min;
    // p = p->succ (not necessary i think)
            while (p != NULL) {
                    if (p->info < min->info) {
                            tmp = &min->info;
                            min->info = p->info;
                            p->info = *tmp;
                    }
                p=p->succ;
            }
        min=min->succ;
}
return head;
}

我得到的輸出(我使用一個經過測試的函數從輸入創建具有n個節點的列表):

Number of elements: 4
insert 4 positive numbers: 
4
3
2
1

1 ->  1 ->  1 ->  1 -> 

通過使用int * ,當您交換信息字段時,可以引用修改后的字段。

您應該將tmp聲明為:

int tmp;

並相應地調整交換代碼。

這樣,您可以在更改之前復制 min->info 的值

此代碼不交換數據

tmp = &min->info;
min->info = p->info;
p->info = *tmp;

第三行只是將數據移回原來的位置,因為min->info現在包含p->info

您需要像這樣交換

int tmp = min->info;
min->info = p->info;
p->info = tmp;

假設數據類型為int因為您沒有發布struct

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM