簡體   English   中英

打印反向鏈接列表

[英]Printing the reverse of a linked list

我正在嘗試打印數字行的問題。 我有一個包含兩個鏈接列表的對象。 一個列表是正數(包括零),而一個鏈接列表是負數(從-1開始),我有一個指向每個列表開頭的指針。 我想做的是按順序打印出列表。 因此,如果否定鏈表有五個節點,而正鏈表有六個節點,我想打印

-5 -4 -2 -1 0 1 2 3 4 5 

我編寫了代碼以按順序打印出肯定列表。 我很難弄清楚如何以相反的順序打印否定列表。 該函數將覆蓋<<操作符,如下所示:

// output operator
std::ostream& operator <<(std::ostream& os, numberLine const& obj) {
    LinkedListNode* temp = obj.negHeader;
    int counter = 0;
    while (temp->next != NULL) {
        temp = temp->next;
        counter++;
    }
    while (temp->next != NULL) {
        for (counter; counter > 0; counter--) {
            temp = temp->next;
        }
        os << temp->value;
    }


    //everything under this prints the nonNeg list

    temp = obj.nonNegHeader;
    //goes through the nonNeg list and prints each element if its not null
    while (temp->next != NULL) {
        os << temp->value;
        temp = temp->next;
    }
    return os;

}

底部的代碼正在打印肯定的鏈表,這是非常基本的。 頂部是我嘗試以相反的順序打印否定列表的嘗試,但是它不起作用,我不確定這是否也是我應該這樣做的方向。

您可以創建一個遞歸函數,例如:

void print_list_reverse(LinkedListNode* current_node) {
    if (current_node->next != NULL) print_list_reverse(current_node->next);
    os << current_node->value;
}

這將繼續進行直到到達列表末尾,並在返回的途中打印每個值。

請記住,如果您的列表太大,則可能會中斷。

暫無
暫無

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

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