2017-10-22 51 views
0

解決數據結構手冊中的問題我買了並且無法讓我的分類鏈接列表編譯。排序功能是我遇到麻煩的地方。目標是隻輸入一個數字,將該數字添加到排序位置的列表中,打印列表。我只是試圖用非常基本的比較操作符進行排序,但我無法實現它的功能。 任何意見或指導將不勝感激。簡單分類的鏈接列表問題

問題下面的代碼:

class Node 
{ 
public: 
    Node* next; 
    int data; 
}; 

class LinkedList 
{ 
public: 
    Node* head; 

    LinkedList(); 
    ~LinkedList(); 
    void add(int data); 
    void print(); 
    void sorting(); 
}; 

void LinkedList::sorting() 
{ 
    Node* head = this->head; 
    Node* node = new Node(); 

    for (Node* current = head; current != nullptr; current = current->next) 
    { 
     if (head->data > head->next->data) 
     { 
      node = head; 
      head = head->next; 
      head->next = node; 
     } 

     head=head->next; 
    } 
} 
+0

您的源代碼是否包含'print()'和'add()'方法的方法體? –

+0

@the_storyteller是的,但是這些方法/功能是完美的。這部分代碼是唯一有問題的代碼。 – Stubbsy

+0

你在'for'循環中似乎沒有使用'current'? – GWW

回答

0

排序功能是在那裏我遇到了麻煩。目標是隻輸入一個數字,將該數字添加到排序位置的列表中,打印列表。

這是否意味着sorting()負責在列表中的排序位置插入新節點?看起來不像你沒有發送任何參數。

但是,我認爲是這樣。現在回到你的代碼。代替使用current,您在for循環中無處不在使用head。這肯定會搞亂你的名單。嘗試更新的代碼,我希望你的代碼應該沒問題。

void LinkedList::sorting(int data) 
{ 
    for (Node* current = head; current != nullptr; current = current->next) 
    { 
     // for ascending sorted list 
     if (current->next->data > data) 
     { 
      Node *node = new Node(); 
      node->data = data; 
      node->next = current->next; 
      current->next = node; 
      break; 
     } 
    } 
}