私は単一のリンクされたリストで作業しており、整数の値が小さいものから大きいものへと並べ替えたいと考えています。アイデアはありましたが、実行が無限ループに入り、その理由がはっきりわかりません。これは、私が使用したコードの一部です。
class Node {
    int data;
    Node* next;
public:
    Node() { };
    void SetData(int aData) { data = aData; };
    void SetNext(Node* aNext) { next = aNext; };
    int Data() { return data; };
    Node* Next() { return next; };
};
class List {
    Node *head;
public:
    List() { head = NULL; };
    void Print();
    void Append(int data);
    void Delete(int data);
};
void List::Append(int data) {
    // Create a new node
    Node* newNode = new Node();
    newNode->SetData(data);
    newNode->SetNext(NULL);
    // Create a temp pointer
    Node *tmp = head;
    if ( tmp != NULL ) {
        // Nodes already present in the list
        // Parse to end of list anytime the next data has lower value
        while ( tmp->Next() != NULL && tmp->Next()->Data() <= newNode->Data() ) {
            tmp = tmp->Next();
        }
        // Point the lower value node to the new node
        tmp->SetNext(newNode);
        newNode->SetNext(tmp->Next());
    }
    else {
        // First node in the list
        head = newNode;
    }
}
void List::Print() {
    // Temp pointer
    Node *tmp = head;
    // No nodes
    if ( tmp == NULL ) {
        cout << "EMPTY" << endl;
        return;
    }
    // One node in the list
    if ( tmp->Next() == NULL ) {
        cout << tmp->Data();
        cout << " --> ";
        cout << "NULL" << endl;
    }
    else {
        // Parse and print the list
        do {
            cout << tmp->Data();
            cout << " --> ";
            tmp = tmp->Next();
        }
        while ( tmp != NULL );
        cout << "NULL" << endl;
    }
}
リストが無限に増加するのか、それともエラーが印刷機能に起因するのか、私は混乱しています...おそらくダミーエラーで申し訳ありません。ありがとう。