即改變鍊錶的指向,把所有的指向都反過來,再輸出。
每遍歷乙個節點,就把節點的資料放入乙個棧裡。先進後出的思想。由此想到遞迴的思想,使用遞迴來處理。但遞迴的方法不是很好,當乙個鍊錶很長很長時,函式遞迴的層次很深,勢必會導致棧溢位。這裡為了舉例我就用遞迴寫,**會很簡單,畢竟上萬個節點的鍊錶也不會常有。也沒必要存那麼長,真有那麼長的資料用陣列加鍊表的組合來存會更好。
//輸入乙個鍊錶的頭結點,從尾到頭輸出
#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...