面試題16 反轉鍊錶

2021-06-25 14:33:12 字數 1977 閱讀 4007

題目描述:輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。

(hint : 請務必使用鍊錶)

輸入:輸入可能包含多個測試樣例,輸入以eof結束。

對於每個測試案例,輸入的第一行為乙個整數n(0<=n<=1000):代表將要輸入的鍊錶的個數。

輸入的第二行包含n個整數t(0<=t<=1000000):代表鍊錶元素。

輸出:對應每個測試案例,

以此輸出鍊錶反轉後的元素,如沒有元素則輸出null。

樣例輸入:

5

1 2 3 4 5

0

樣例輸出:

5 4 3 2 1

null

【解析】

*   日期:2013-11-21

*   題號: 題目1518:反轉鍊錶

*   結果:ac

*   總結:

**********************************/

#include

#include 

#include 

#include 

using

namespace

std;  

typedef

struct

listnodelistnode;  

listnode* reverselist(listnode*head)  

else

p->next = pre;  

pre = p;  

p = pnext;  

}  return

head;  

}  }  

intmain()  

//無資料

if(n <= 0)  

//輸出反轉後資料

else

else

p = p->next;  

}  }  

}  return

0;  

}  

[cpp]view plain

copy

/*********************************

*   日期:2013-11-21

*   題號: 題目1518:反轉鍊錶

*   結果:ac

*   總結:

**********************************/

#include

#include 

#include 

#include 

using

namespace

std;  

typedef

struct

listnodelistnode;  

listnode* reverselist(listnode*head)  

else

return

head;  

}  }  

intmain()  

//無資料

if(n <= 0)  

//輸出反轉後資料

else

else

p = p->next;  

}  }  

}  return

0;  

面試題16 反轉鍊錶

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。思路 設定三個指標p q temp,p用來指向當前結點,q用來指向當前結點的前乙個結點,temp指向當前結點的下乙個結點,遍歷鍊錶的結點時,先儲存當前結點p的下乙個結點到temp,然後讓當前結點的next指向前乙個結點p,...

面試題16 反轉鍊錶

題目 反轉鍊錶。輸入鍊錶的頭結點,反轉輸出反轉後鍊錶的頭結點。這種鍊錶操作的題之前做過,還專門寫過鍊錶反轉的東東。咋一看,覺得這用遞迴不so easy嗎。結果,papa打臉了,寫了半個多小時才出來,面試肯定就掛了。都要哭了,寫一萬遍都不會啊。先用遞迴實現 struct listnode class ...

面試題16 反轉鍊錶

struct listnode 此題可以用遞迴和頭插法來做。用遞迴做起來稍微複雜一點,而且會有個問題,就是當鍊表太長時,可能會導致系統棧溢位。大體思路就是,當我們每遞迴的鍊錶的乙個節點時,如果該節點不是最後乙個,就先遞迴反轉它後面的鍊錶,然後將該節點push back到尾部,所以我們需要乙個tail...