2013-08-25 54 views
0

所以我這裏有錯誤插入字到鏈表

struct ListNode 
{ 
    string item; 
    ListNode *next; 
}; 

ListNode *head; 
ListNode *cur; 
ListNode *prev; 
ListNode *search(); 

我的鏈表結構而我的方法將節點添加到鏈表

inline void List::guessedWords(string guess) 
{ 
cur = head; 

while (cur != NULL) 
{ 
    ListNode *newNode = new ListNode; 
    newNode->item = guess; 

    if (head == NULL) 
    { 
     newNode->next = NULL; 
     head = newNode; 
    } 

    else 
    { 
     prev = search(); 
     newNode->next = cur; 
     prev->next = newNode; 
    } 

    cur = newNode; 
} 
} 

任何人都可以指向我什麼是我的錯誤呢?我無法添加第一個節點。
搜索功能是遍歷到節點的末尾。我想要做的是繼續在他的節點後面添加單詞。

回答

0

while循環看起來有點奇怪,你並不需要一個循環插入單個元素給出的search()功能(其中有一個叫tail指針來代替)。另外,

cur = head; 
while (cur != NULL) 
{ /* .... */ 
    if (head == NULL) 

以上head == NULL永遠不會評估爲真,因爲while條件已經過濾掉了這種可能性。

head = tail = NULL; 
inline void List::guessedWords(string guess) 
{ 

    ListNode *newNode = new ListNode; 
    newNode->item = guess; 
    newNode->next = NULL; 

    if (head == NULL) 
    { 
     head = newNode; 
     tail = newNode; 
    } 
    else 
    { 
     tail->next = newNode; 
    } 

} 
+0

如果head == NULL錯誤,我將如何檢查我的頭是否爲NULL或不插入第一個元素。 –

+0

你在while條件下檢查它。你同意'head == NULL'不能評估爲真? – perreal

+0

我已經省略了while循環。是的,while循環聽起來不正確。不知道我的大腦在想什麼。問題依舊,我無法插入第一個節點。那麼,如果head == NULL不能成立,我的條件是什麼?對不起,愚蠢的問題,我是新來的鏈接列表,並有很短的時間學習。 –

0

我猜你缺少, 尾= tail->未來;剛剛在 tail-> next = newNode;

它會確保尾部更新到最後一個節點。