2011-04-01 126 views
0

鑑於在正確的位置在已排序的鏈接列表中插入新節點時出現問題,我提出了以下解決方案。已排序的插入鏈接列表

void SortedInsert(node** headref, node* newnode) { 
    node* prev = NULL; 
    node* curr = *headref; 
    for (; curr;) { 
    if (curr->info > newnode->info) { 
     break; 
    } 
    prev = curr; 
    curr = curr->next; 
    } 
    if (!prev) { 
    newnode->next = *headref; 
    *headref = newnode; 
    } else { 
    newnode->next = prev->next; 
    prev->next = newnode; 
    } 
} 

這是行不通的。 有沒有任何邊緣情況下這不起作用。有更簡單的解決方案嗎?

+0

_Does this work._你是否測試過自己的一些案例? – Mike 2011-04-01 20:13:57

+0

編譯好。在前面,中間,結束時添加。有一個更簡單的方法。 – shreyasva 2011-04-01 20:15:21

回答

0

而不是使curr指向您想要插入的節點,使curr指向指向您要插入的節點的指針。

+0

咦?在「待插入」節點之後,電流實際上指向一個節點。 – shreyasva 2011-04-02 02:08:38

+0

@shreyasva是的,我的語法在技術上是正確的,但英語是我的母語。您的代碼點位於節點處。您想在該節點之前插入。所以curr指向新插入的節點之後的節點。它涉及到同樣的事情。 – Neil 2011-04-02 19:21:48