【資料結構】逆序輸出單鏈表資料
阿新 • • 發佈:2019-02-18
思路:遞迴。形式為(輸出該資料之後的連結串列值)+輸出這個資料。
值得一提的是,如果帶有頭節點的單鏈表,需要前行前行一位,使連結串列指向開始節點。程式碼如下:
void printDeverse_main(LinkList List)
{
List = List->next;//起始為開始節點
printDeverse(List);
}
我的遞迴程式碼:
void printDeverse(LinkList List) { if (List == NULL) { return; } if (List->next != NULL) { printDeverse(List->next); cout << " " << List->data; } if (List->next == NULL) { cout<< List->data; } }
標準答案顯得更加簡潔:
void reprint(LinkList List)
{
if (List != NULL)
{
reprint(List->next);
cout << List->data << " ";
}
}
分析:
我的遞迴,是挺教條的。
1.首先考慮一般情況,輸出完這個資料後,則應該再次呼叫該函式
if (List->next != NULL) { printDeverse(List->next); cout << " " << List->data; }
2.如果輸出完後沒有這個資料,則呼叫:
if (List->next == NULL)
{
cout<< List->data;
}
3.如果連結串列為空,則:
if (List == NULL)
{
return;
}
其實這三種情況,概況起來就是標準答案,如果連結串列不空,就呼叫遞迴,並輸出該資料。如果連結串列空了,就不作為。簡潔明瞭。我的就過於冗餘了。