如何逆序輸出乙個鍊錶的節點內容

2022-09-23 14:12:08 字數 758 閱讀 8053

即改變鍊錶的指向,把所有的指向都反過來,再輸出。

每遍歷乙個節點,就把節點的資料放入乙個棧裡。先進後出的思想。由此想到遞迴的思想,使用遞迴來處理。但遞迴的方法不是很好,當乙個鍊錶很長很長時,函式遞迴的層次很深,勢必會導致棧溢位。這裡為了舉例我就用遞迴寫,**會很簡單,畢竟上萬個節點的鍊錶也不會常有。也沒必要存那麼長,真有那麼長的資料用陣列加鍊表的組合來存會更好。

//輸入乙個鍊錶的頭結點,從尾到頭輸出

#include

using namespace std;

struct node

;void func1()

tmp->next = null;

p = p->next;

while(p != null)

cout << endl;

struct node *p1 = ⊤

struct node *p2 = p1->next;

struct node *p3 = p2->next;

while(p2 != null)

top.next = null;

while(p1->next != null)

cout << endl;

}void myfunc(struct node *p)

}void func2()

tmp->next = null;

p = p->next;

myfunc(p);

cout << endl;

}int main()

問題 如何實現乙個高效的單向鍊錶逆序輸出?

直接遞迴實現核心 片段 public void reverse head 下一層需要做的事兒 reverse head.next 本層需要做的事兒 print head 採用棧進行儲存實現核心 片段 public void reverse head 將所有元素出棧 while stack.isemp...

如何逆序輸出乙個整數

給出乙個整數,將它逆序輸出,首先求出它是乙個幾位數,利用for迴圈將數字從高位到低位分別輸出。例如1234這個數,首先通過for迴圈求出,它是乙個4位數,然後1234第一次除以1000,得到1並輸出,1234再對1000取餘,去掉1得到234,第二次234除以100,得到2並輸出,234再對100取...

逆序建立乙個鍊錶

本題要求實現乙個函式,按輸入資料的逆序建立乙個鍊錶。函式介面定義 struct listnode createlist 函式createlist利用scanf從輸入中獲取一系列正整數,當讀到 1時表示輸入結束。按輸入資料的逆序建立乙個鍊錶,並返回煉表頭指標。鍊錶節點結構定義如下 struct lis...