国产激情久久久久影院小草_国产91高跟丝袜_99精品视频99_三级真人片在线观看

筆試題單向鏈表的反轉(zhuǎn)

時間:2020-10-19 09:40:04 筆試題目 我要投稿

筆試題(單向鏈表的反轉(zhuǎn))

單向鏈表的反轉(zhuǎn)是一個經(jīng)常被問到的一個面試題,也是一個非常基礎(chǔ)的問題。比如一個鏈表是這樣的: 1->2->3->4->5 通過反轉(zhuǎn)后成為5->4->3->2->1。

筆試題(單向鏈表的反轉(zhuǎn))

    最容易想到的.方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當(dāng)前指針指向的下一個元素,然后將當(dāng)前節(jié)點(diǎn)元素的指針反轉(zhuǎn)后,利用已經(jīng)存儲的指針往后面繼續(xù)遍歷。源代碼如下:

       1. struct linka {
       2. int data;
       3. linka* next;
       4. };
       5. void reverse(linka*& head) {
       6. if(head ==NULL)
       7.                   return;
       8. linka *pre, *cur, *ne;
       9. pre=head;
      10. cur=head->next;
      11. while(cur)
      12. {
      13.    ne = cur->next;
      14.    cur->next = pre;
      15.    pre = cur;
      16.    cur = ne;
      17. }
      18. head->next = NULL;
      19. head = pre;
      20. }

    還有一種利用遞歸的方法。這種方法的基本思想是在反轉(zhuǎn)當(dāng)前節(jié)點(diǎn)之前先調(diào)用遞歸函數(shù)反轉(zhuǎn)后續(xù)節(jié)點(diǎn)。源代碼如下。不過這個方法有一個缺點(diǎn),就是在反轉(zhuǎn)后的最后一個結(jié)點(diǎn)會形成一個環(huán),所以必須將函數(shù)的返回的節(jié)點(diǎn)的next域置為NULL。因?yàn)橐淖僪ead指針,所以我用了引用。算法的源代碼如下:

       1. linka* reverse(linka* p,linka*& head)
       2. {
       3. if(p == NULL || p->next == NULL)
       4. {
       5.    head=p;
       6.    return p;
       7. }
       8. else
       9. {
      10.    linka* tmp = reverse(p->next,head);
      11.    tmp->next = p;
      12.    return p;
      13. }
      14. }
 

【筆試題(單向鏈表的反轉(zhuǎn))】相關(guān)文章:

C++筆試題:關(guān)于鏈表和指針11-22

360筆試題目10-20

華為2017筆試題08-16

2017公共英語一級單向選擇模擬試題08-12

華為2017筆試試題08-10

簡單向上勵志個性簽名10-18

桂林銀行筆試題筆經(jīng)10-21

ps反轉(zhuǎn)負(fù)沖效果教程介紹11-23

QMS2007筆試審核知識模擬試題11-02

筆試實(shí)例:判斷單鏈表中是否存在環(huán)11-23