面試 演算法 單鏈表逆序輸出法

2021-10-12 10:39:39 字數 801 閱讀 1450

陣列法,遍歷鍊錶每個元素存陣列,然後逆序遍歷陣列輸出

頭插法,遍歷鍊錶將遍歷到的元素插入煉表頭,然後重新遍歷鍊錶輸出

棧輸出,遍歷鍊錶將每個元素存入棧中,然後將棧元素全部出棧輸出

遞迴法,遍歷鍊錶,非未節點則繼續遞迴

陣列法實現核心**:

int array_rever(n *head)

//輸出

for(i=len-1; i >=0; i--)

free(parray);

return 0;

}

頭插法核心**:

n *inserttohead(n *head)

//輸出

n *tmp = null;

tmp = head;

while(tmp)

return head;

}

棧輸出核心**:

linklist *back_linklist(linklist *head)

p = head->next;//p再指向首結點

while (!stackempty(&s1)) //當棧s不空時

return head;

}

遞迴實現核心**:

linklist *back_linklist(linklist *head)

總結:

遞迴法耗快取

棧方法與陣列方法區別不大

效率最高的是頭插法,通過改變指標來調整順序

單鏈表逆序或者逆序輸出

分為兩種情況,一種是只逆序輸出,實際上不逆序 另一種是把鍊錶逆序。逆序輸出 include include includeusing namespace std typedef struct nodenode 尾部新增 node add int n,node head else if head ne...

如何逆序輸出單鏈表?

怎樣才能逆序輸出單鏈表呢?剛剛有人考了我一道題,逆序輸出單鏈表 我是這樣答的 下面的 為偽 不能通過編譯 void printslist slist plist printf s str.c str 後來他讓我想一想還有沒有更為簡單的方法了,當時允許我上網,我用了幾分鐘到網上找了一下,沒有找到更好的...

面試演算法題 單鏈表的快速排序實現

面試時被問到單鏈表快速排序的問題,回來仔細實現下,面試時細節沒有處理好只說出來一些思想。本人菜鳥請大家指教。include using namespace std typedef struct linklist listpoint void quicksort linklist head,linkl...