[英]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.