Free mind

          Be fresh and eager every morning, and tired and satisfied every night.
          posts - 39, comments - 2, trackbacks - 0, articles - 0
             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          c,c++水平相關(guān)

          Posted on 2007-09-08 23:35 morphis 閱讀(610) 評論(0)  編輯  收藏 所屬分類: 1. C/Cpp

          1. 在類的普通成員函數(shù)中調(diào)用虛函數(shù),情況是怎么樣的?(對象、引用、指針)

          多態(tài), 事實上,這是 Template Method模式的關(guān)鍵
          2.
          關(guān)于成員變量初始化順序,幾個有依賴關(guān)系的成員變量要初始化,讓寫出構(gòu)造函數(shù)。

          在初始化列表中,成員變量的初始化順序是其在類中聲明順序,而非列表中的順序。

          3. 寫一個雙鏈表。

          Struct ListNode

          {

              int nData;

              ListNode* pPreviousNode;

              ListNode* pNextNode;

          }

          一般鏈表都會有一個表頭節(jié)點與指向表頭節(jié)點的頭指針, 應(yīng)該會提供列表接口, 按此數(shù)據(jù)結(jié)構(gòu)實現(xiàn)即可。

          4. 寫個is-ahas-a

          這個比較簡單

          Class Pet{};

          Class Dog: public Pet{};

          Class Boy{Pet* m_pPet;};

          5. struct vs. class.

          1)默認訪問屬性, structpublic, classprivate

          2) 默認繼承屬性,structpublic, classprivate
          3)class
          可以用來聲明模板參數(shù),而struct不能

          6. 8個小球的問題

          沒題

          7. stl 里面vector的實現(xiàn)(內(nèi)部空間的申請與分配)

          Vector中文名字是動態(tài)數(shù)組, 其內(nèi)部數(shù)據(jù)結(jié)構(gòu)就是一個數(shù)組, 但是在數(shù)組元素不夠用的時候,就要動態(tài)的重新分配, 一般是現(xiàn)在大小的兩倍, 然后把原數(shù)組的內(nèi)容拷貝過去。所以, 在一般情況下, 其訪問速度同一般數(shù)組, 只有在重新分配發(fā)生時, 其性能才會下降

          8. struct /class的區(qū)別

          重復(fù)了

          9. 為什么要用struct

          成員的默認屬性不同,用struct的話,主要是作為數(shù)據(jù)的集合。

          10. 怎樣使一個class不能被實例化

          1,構(gòu)造函數(shù)私有化,2,抽象類

          11. 私有繼承和public繼承的區(qū)別。

          私有繼承: 只繼承實現(xiàn),不繼承實現(xiàn) has-a

          公有繼承:繼承接口與實現(xiàn)    is-a

          12. void *p的問題

          不能++

          13. 引用和指針的區(qū)別與聯(lián)系。引用是否可以更改

          聯(lián)系: 支持多態(tài),可以用來引用同一對象

          區(qū)別:指針可以為NULL 引用不可以; 指針可以重賦值, 引用不可以;

          14. windows編程基礎(chǔ),線程與進程的區(qū)別

          程序是一系列靜態(tài)的指令序列

          進程是程序的一次動態(tài)執(zhí)行,進程其實是一個資源的容器,包括一個私有的虛擬地址空間,一些初始的代碼與數(shù)據(jù), 一些系統(tǒng)資源的句柄等

          線程是一個進程中的執(zhí)行體, 一般包括CPU寄存器狀態(tài),兩個棧(內(nèi)核模式,用戶模式)以及一個TLS(Thread-Local Storage)

          15. com+是否熟悉

          COM+COM技術(shù)的延伸與發(fā)展, 它包括了所有COM的基本功能(基于接口的編程模型,基本組件服務(wù)),并組合了DCOM(使組件技術(shù)延伸到了分布式領(lǐng)域)和MTS-Microsoft Transaction Server(提供了服務(wù)器端的組件管理與配置管理),并新增了一些服務(wù):負載平衡,內(nèi)存數(shù)據(jù)庫,事件模型,隊列服務(wù)等,主要用于Windows DNA(Distributed interNet Application Architecture)三層結(jié)構(gòu)的中間層。

          16. 簡述一下hash算法

          哈希表的目的是表查詢插入修改能夠達到O(1)的算法復(fù)雜度, 通過對key編碼來確定其存儲地址來實現(xiàn), 當不同的key得到相同的編碼時,便需要進行沖突檢測與處理,一般方法有除留余數(shù)法, 線性探測法,平方探測法, 這使其無法真正達到O(1)

          17. 一個32位的數(shù)據(jù),怎樣找到最左邊的一個1

          如果是在最左位,這個數(shù)是負數(shù),否則的話,左移一位,看是否變成負數(shù),這是O(n)的算法 也可以用一個模板去與,并不斷改變這個模板

          O(n/2)的算法:二分方式查找 ???

          18. 一個4*4的格子,填入1~15 然后給個目標狀態(tài),怎樣去搜索。
          比如:
           1   2  3    6
           0   4  5    7
           8   9  10 11
          12 13 14 14

          再給出個最終的狀態(tài) (隨便都可以)
          0 表示一個空格,可以移動,有點像拼圖;
           

          人工智能的教材上用的應(yīng)該就是這個例子,用A*算法,它既不是廣度搜索,也不是深度搜索,而是一種啟發(fā)式搜索,在進行下一步搜索之前,會用一個估價函數(shù)來對后面的節(jié)點評分, 取評分最優(yōu)的進行下一步搜索,如果找不到結(jié)果,回溯。對于本題,用曼哈頓距離作為評分標準是個不錯的選擇。

          19. 給你100萬個數(shù)據(jù),數(shù)據(jù)的值在0~65535之間 用最快的速度排序

          多關(guān)鍵字基數(shù)排序MSD(MOST SIGNIFICANT DIGIT FIRST)

          20. 如果我們的一個軟件產(chǎn)品,用戶回復(fù)說:運行速度很慢,你怎么處理?

          詢問其Workflow, 用戶的硬件環(huán)境

          21. 八皇后問題,詳述解法 八皇后問題說的是在8*8國際象棋棋盤上,要求在每一行放置一個皇后,且能做到在豎方向,斜方向都沒有沖突

          回溯法

          22. kmp快速匹配算法 ---不算輕松的搞定

          普通的模式匹配算法,一旦不匹配,模式串右移一位;但是其實根據(jù)一直條件,我們可以算出應(yīng)該向右移幾位以避免不必要的比較;算法實現(xiàn)比較曲折

          23. 無向圖中兩點間最短路問題 ---偉大的迪杰克斯拉算法

          假設(shè)一共有N個節(jié)點, 需要一個一維數(shù)組Previous[N]來記錄前一個節(jié)點序號;一個一維數(shù)組TotalLength[N]來記錄從原點到當前節(jié)點最短路徑;一個二維數(shù)組Weights[N][N]來記錄各點之間邊的權(quán)重(如果存在) 然后從源點到終點進行深度搜索或廣度搜索, 按以下規(guī)則:搜索到某個節(jié)點b時,假設(shè)其前一個節(jié)點為a, TotalLength[a] + Weights[a][b]TotalLength[b]相比較,如果小于TotalLength[b] TotalLength[b] = TotalLength[a] + Weights[a][b], Previous[b] = a; 反之則不做任何操作。這樣到搜索結(jié)束后, Previous[N]數(shù)組中就能得到整條最短路徑了

          24. 空間中任意給兩個向量,求角平分線

          先單位化, 假設(shè)單位化后結(jié)果為nv1, nv2, 則角平分線為(nv1+nv2) / 2

          25. 什么是平衡樹

          左右子樹都是平衡樹,且高度相差不超過1的有序二叉樹

          26. 哈夫曼編碼問題

          理論基礎(chǔ):霍夫曼樹是帶權(quán)路徑長度(WPLWeighted Path Length)最小的二叉樹,它不一定是完全二叉樹,應(yīng)該是權(quán)值大的外結(jié)點離根節(jié)點最近的擴充二叉樹。霍夫曼編碼是為了實現(xiàn)數(shù)據(jù)的最小冗余編碼,是數(shù)據(jù)壓縮學(xué)的基礎(chǔ)。 它根據(jù)字符在電文中出現(xiàn)的頻率為權(quán)值,構(gòu)造霍夫曼樹,左為0 右為1. 其有兩個效果,一是保證電文有最短的編碼,二是字符間不需要分隔符,因為不同的字符必定有不同的開頭(成為前綴編碼)。

          27. 有向圖求環(huán)

          以該節(jié)點為源點與終點嗎進行深度優(yōu)先或廣度優(yōu)先搜索

          28. .n個點,求凸包問題

          凸包(convex hull)是指一個最小凸多邊形,滿足這N個點都在多邊形上,或其內(nèi)。算法描述:

          求出最右的那個點作為凸多邊形的一個頂點(P0),遍歷其他所有點(Pi) 如果其他點都在向量P0Pi的同一側(cè),則Pi也為凸多邊形的頂點。

          29. 四則運算(給一個前綴表達式(波蘭式)或后綴表達式(逆波蘭式),然后求解;給一個中綴表達式)

          +*-CDBA -/EF---------------------> A+B*(C-D)-E/F       前綴-中綴

          操作符進棧,一個變量tmp放上一個中間操作數(shù)(運算結(jié)果),遇到操作數(shù)檢查tmp是否為空, 空的話取兩個操作數(shù),不空的話取一個操作數(shù),另一個就是tmp了,操作符出棧運算,結(jié)果放入tmp中,如果是操作符,tmp清空

           ABCD-*+EF/- ---------------------> A+B*(C-D)-E/F     后綴-中綴

          操作數(shù)進棧,遇到操作符,兩個操作數(shù)出棧,計算結(jié)果入棧

          30. STLcontainer有哪些?

          序列容器: vector, list, deque, bitset

          關(guān)聯(lián)容器:     set, multiset, map, multimap

          適配容器:stack, queue, priority_queue

          類容器:         string, valarray, bitset

          擴展容器:hash_set, hash_multiset, hash_map, hash_multimap

          31. map中的數(shù)據(jù)存儲方式是什么?

          紅黑樹, 是一種平衡二叉搜索樹, 具有良好的最壞情況運行時間(統(tǒng)計性能好與AVL樹)

          32. maphashmap有什么區(qū)別?

          內(nèi)部數(shù)據(jù)結(jié)構(gòu)不同, map是紅黑樹,hashmap是哈希表

          33. hashmap是標準庫中的嗎?

          不是的,但在SGI stlvc2005中都提供了。

          34. vector中的erase方法跟algorithmremove有什么區(qū)別?

          vectorerase是真正刪除了元素, 迭代器訪問不到了。 algorithm中的remove只是簡單的把要remove的元素移到了容器最后面,迭代器還是可以訪問到的。因為algorithm通過迭代器操作,不知道容器的內(nèi)部結(jié)構(gòu),所以無法做到真正刪除。

          35. object是什么?

          具有內(nèi)部狀態(tài),以及操作的 軟件構(gòu)造,用來表示真實存在(物理上或概念上)的對象

          36. C++中如何阻止一個類被實例化?

          純虛函數(shù);構(gòu)造函數(shù)私有化(友元)

          37. 一般在什么時候構(gòu)造函數(shù)被聲明成private呢?

           singleton模式; 阻止某些操作(如阻止拷貝構(gòu)造

          38. 什么時候編譯器會生成默認的copy constructor呢?

          用戶沒有自定義copy constructor;在代碼中使用到了copy constructor;

          39. 如果你已經(jīng)寫了一個構(gòu)造函數(shù),編譯器還會生成copy constructor嗎?

          如果我寫的是copy constructor, 不會

          如果我寫的不是copy constructor, 38

          40. 為什么說如果一個類作為基類,則它的析構(gòu)函數(shù)要聲明成virtual的?

          因為,如果delete一個基類的指針時, 如果它指向的是一個子類的對象,那么析構(gòu)函數(shù)不為虛就會導(dǎo)致無法調(diào)用子類析構(gòu)函數(shù),從而導(dǎo)致資源泄露。 當然,另一種做法是將基類析構(gòu)函數(shù)設(shè)為protected.

          41. inline的函數(shù)和#define有什么區(qū)別?什么時候會真的被inline,什么時候不會呢?

          1) 宏是在預(yù)編譯階段簡單文本替代, inline在編譯階段實現(xiàn)展開

          2)宏肯定會被替代,而復(fù)雜的inline函數(shù)不會被展開

          3)宏容易出錯(運算順序),且難以被調(diào)試,inline不會

          4)宏不是類型安全,而inline是類型安全的,會提供參數(shù)與返回值的類型檢查

          當出現(xiàn)以下情況時inline失敗

          函數(shù)size太大

          inline虛函數(shù)

          函數(shù)中存在循環(huán)或遞歸

          函數(shù)調(diào)用其他inline函數(shù)

          42. 如果把一個類的成員函數(shù)寫在類的聲明中是什么意思?

          inline此函數(shù) inlinetemplate類似, 必須在.h中實現(xiàn))

          43. public繼承和private繼承有什么架構(gòu)上的區(qū)別?

          publicis-a的關(guān)系,繼承接口與實現(xiàn)

          privatehas-a的關(guān)系 ,只繼承實現(xiàn)

          44. 在多繼承的時候,如果一個類繼承同時繼承自class Aclass B,而class AB中都有一個函數(shù)叫foo(),如何明確的在子類中指出override哪個父類的foo()

          首先,fooA,B總應(yīng)該都是虛函數(shù),否則就直接覆蓋了,就沒有這個問題了;其次,這個問題從語法角度來看似乎是無法解決。因為我們不能改原有設(shè)計(不然也沒這個問題了:),所有只好從extend來考慮:

          class EA: public class A

          {

          public:

             virtual void foo(){fooA();}

          private:

             virtual void fooA() = 0;

          }

           

          class EB: public class B

          {

          public:

             virtual void foo(){fooB();}

          private:

             virtual void fooB() = 0;

          }

           

          這樣, 我就可以override不同的函數(shù)來達到這個目的了

          class AB: public EA, pubic EB

          {

          private:

          virtual void fooA(){}

          virtual void fooB(){}

          }

          45. 虛擬繼承的語法是什么?

              A

           /     \

          B      C

             \ /

              D

          class A{};

          class B: virtual public A{};

          class C: virtual public A{};

          class D: public B, public C{};

          46. 部分模版特例化和全部模版特例化有什么區(qū)別?

          偏特化只使用于類模板,而全特化適用與函數(shù)模板,類模板。

          偏特化的結(jié)果還是一個模板,而全特化的結(jié)果是一個具體的類型。

          47. 編一個函數(shù),使一個單項鏈表轉(zhuǎn)置。

          應(yīng)該是逆序吧

          這個小算法竟然花了我不少時間,沒有測試過的:

          struct ListNode
          {
              
          int data;
              ListNode
          * next;
          };

          void ReverseList(ListNode* p)
          {
              ListNode
          * p0 = NULL;
              ListNode
          * p1 = p->next;
              ListNode
          * p2 = p1 ? p1->next : NULL;

              
          // 三個指針,分別表示當前處理節(jié)點,前一節(jié)點與后一節(jié)點
              
          // 復(fù)用頭節(jié)點的next來保存節(jié)點
              while (NULL != p2)
              {
                  p
          ->next = p2->next; //暫存

                  p1
          ->next = p0;      //逆轉(zhuǎn)
                  p2->next = p1;

                  p0 
          = p1;            //往下一個節(jié)點
                  p1 = p2;
                  p2 
          = p->next;
              }
              p
          ->next = p1;    //p1末元素變?yōu)槭自兀湹筋^節(jié)點上
          }

           

          48. 拆解一個整數(shù),比如4,可以拆解成4=3+14=2+24=2+1+14=1+1+1+1

          首先,對一個數(shù)進行拆分后,可能又要對最后一個因子進行拆分,所以要用遞歸;其次,第n+1個因子是小于等于第n個因子的;再者,對最后一個因子,我可以直接輸出,也可以繼續(xù)拆分。

          算法如下:

          void print(int res[], int num)
          {
              
          for (int i = 0; i < num; ++i)
              {
                  printf(
          "%d ", res[i]);
              }
              printf(
          "\n");
          }
          // n表示總數(shù),m表示最大因子
          void split(int n, int m)
          {
              
          static int res[100]; //保存結(jié)果
              static int num = -1//當前因子下標
              num++;
              
          //遞歸終止條件,為0不可再分,直接輸出
              if(0 == n) 
              {
                  print(res, num
          +1);
                  num
          --;
                  
          return;
              }
              
          else
              {
                  
          if(n == m) 
                  {
                      
          // 不拆,直接輸出
                      res[num] = m;
                      print(res,num
          +1);
                      num
          --;
                  }
                  
          else
                  {
                      
          // 拆分出第一個
                      res[num] = m;
                      n 
          = n-m;
                      
          //最大因子不可能大于總數(shù)
                      if(m>n) m = n;

                      
          // 循環(huán),第二個因子可以繼續(xù)拆分,而且按照最大因子不同可以拆分成多個
                      for (int i = m; i>=1--i)
                      {
                          split(n, i);
                      }
                      num
          --;
                  }    
              }
          }

          void Split(int n)
          {
              
          for (int i = n-1; i>=1; i--)
              {
                  split(n, i);
              }
          }


          唉,老了,這個小東西搞了我N久的。。。。

          49. 不用庫函數(shù),實現(xiàn)strcpy或者memcpy等函數(shù)

          一個字節(jié)一個字節(jié)的拷過去吧,但是要考慮源內(nèi)存與目標內(nèi)存的重疊。

          50. 內(nèi)聯(lián)函數(shù)的作用和缺點

          把代碼直接插入到調(diào)用的地方,可以減少函數(shù)調(diào)用的次數(shù),但是會增加代碼的size,還有,如果內(nèi)聯(lián)失敗,在每個調(diào)用的obj里,都會產(chǎn)生一份該函數(shù)的拷貝,這樣既沒有怎么減少代碼的size,又沒有減少函數(shù)的調(diào)用,賠了夫人又折兵。。。

          51. 指針和引用的區(qū)別

          指針可以不初始化,引用必須初始化

          指針可以是NULL,而引用必須引用一個實在的對象

          指針可以重指向其他對象,引用一旦初始化,便不再改變

          52. 友元的意義

          使被聲明為友元的函數(shù)或類可以訪問某個類的非共有成員

          53. 虛函數(shù)的意義

          實現(xiàn)多態(tài)

          54. Overload, Overwrite, Override 各自的特點和意義

          Overload: 函數(shù)重載(名字相同,參數(shù)不同)

          Overwrite:覆蓋

          Override: 虛函數(shù)重載

          55. 頭文件中的ifndef/define/endif 干什么用?

          防止該頭文件被重復(fù)引用

          56. i nclude <filename.h> 和#i nclude “filename.h” 有什么區(qū)別?

          i nclude <filename.h> 從標準庫路徑去尋找該文件,對于VC來說,應(yīng)該還包括VC環(huán)境設(shè)置選項中的包含目錄以及工程屬性中指定的目錄

          i nclude “filename.h”:先在當前目錄查找,如果找不到,按上面那種方式尋找

          57. C++ 程序中調(diào)用被C 編譯器編譯后的函數(shù),為什么要加extern “C”

          C++語言支持函數(shù)重載,C 語言不支持函數(shù)重載。函數(shù)被C++編譯后在庫中的名字與C 語言的不同。C++提供了C 連接交換指定符號extern“C”來解決名字匹配問題

          58. 一個類有基類、內(nèi)部有一個其他類的成員對象,構(gòu)造函數(shù)的執(zhí)行順序是怎樣的?

          先執(zhí)行基類的(如果基類當中有虛基類,要先執(zhí)行虛基類的,其他基類則按照聲明派生類時的順序依次執(zhí)行),再執(zhí)行成員對象的,最后執(zhí)行自己的。

          59. 請描述一個你熟悉的設(shè)計模式

          這個看你熟悉什么了。singleton最簡單了,template method用的最多了,bridge挺炫的,command吹吹undo,redo也不錯。。。。。

          60. UML 中,聚合(aggregation)和組合(composition)有什么區(qū)別?

          其實從名字就能分別出來了。

          聚合表示只是簡單的聚聚,沒什么本質(zhì)的聯(lián)系,所以這些對象的生存時間也就沒什么關(guān)系了;

          組合表示了更加緊密的一種關(guān)系,這些對象有著共同的生存期。

          一個典型的例子是孫悟空,手臂,金箍棒的關(guān)系。。。。

          61. C#C++除了語法上的差別以外,有什么不同的地方?

          C++是直接生成可執(zhí)行代碼,而C#是先生成中間代碼,等到第一次執(zhí)行時,才由JITJust In Time)生成可執(zhí)行的機器碼。

          還有就是(1) c#有垃圾自動回收機制,程序員不用擔(dān)心對象的回收。(2)c#嚴禁使用指針,只能處理對象。如果希望使用指針,則僅可在unsafe 程序塊中能使用指針。(3)c#只能單繼承。(4)必須通過類名訪問靜態(tài)成員。不能像C++中那樣,通過對象訪問靜態(tài)成員。(5)在子類中重寫父類的虛函數(shù)時必須用關(guān)鍵字override,覆蓋父類的方法要用關(guān)鍵字new

          62. New deletemalloc free 的區(qū)別

          對于類,New delete會調(diào)用構(gòu)造,析構(gòu)函數(shù)

          newdelete都是能感知到類型的。new返回一個制定的類型,delete刪除一個指定的類型,從而不用給定size。而mallocfree都是處理void類型的。用時時必須經(jīng)過強制類型轉(zhuǎn)換。

          63. #define DOUBLE(x) x+xi = 5*DOUBLE(10)i是多少?正確的聲明是什么?

          I = 5*10+10 = 60 60

          正確的聲明是:

          #define DOUBLE(x) ((x)+(x))

          64. 有哪幾種情況只能用intialization list 而不能用assignment?

          當類中含有constreference 成員變量;基類的構(gòu)造函數(shù)都需要參數(shù);類中含有其他類的成員對象,而該類的構(gòu)造函數(shù)都需要參數(shù)。

          65. C++是不是類型安全的?

          不是。兩個不同類型的指針之間可以強制轉(zhuǎn)換。C#是類型安全的。

          66. main 函數(shù)執(zhí)行以前,還會執(zhí)行什么代碼?

          全局對象的構(gòu)造函數(shù)會在main 函數(shù)之前執(zhí)行。

          67. 描述內(nèi)存分配方式以及它們的區(qū)別。

          1)從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量,static 變量。

          2 在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時這些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集。用的是cache,速度較快但容量較小。

          3 從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc new 申請任意多少的內(nèi)存,程序員自己負責(zé)在何時用free delete 釋放內(nèi)存。動態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問題也最多。

           (4)文字常量區(qū), 如char* p = "hello, world"就是一個例子,其內(nèi)存也在程序編譯的時候就已經(jīng)分配好?

            一個程序除了上面這些,還有一個(5)程序代碼區(qū)了。

          68. 比較一下C++static_cast dynamic_cast 的區(qū)別。

          Static_cast可以顯式的做一些自動轉(zhuǎn)換,如一些int, char一些基礎(chǔ)類型的轉(zhuǎn)換,以及指針之間的轉(zhuǎn)換。但是其不保證安全性。Dynamic_cast主要作用其實在于把一個基類指針轉(zhuǎn)化為子類指針,因為這個基類指針真正指向的不一定是我們想轉(zhuǎn)換的類型的對象,所以轉(zhuǎn)換可能失敗,dynamic_cast能夠知道失敗而返回NULL,而static_cast就沒那么聰明了,原因是dynamic_cast會利用rtti去查找該轉(zhuǎn)換是否可行.(耗費時間多點。)

          69. 當一個類A 中沒有生命任何成員變量與成員函數(shù),這時sizeof(A)的值是多少,如果不是零,請解釋一下編譯器為什么沒有讓它為零。

          不為零,不同的對象應(yīng)該有不同的地址,假設(shè)我聲明一個A的數(shù)組A a[2],如果為零,那么a[0]a[1]的地址豈不相同了

          70. 已知兩個鏈表head1 head2各自有序,請把它們合并成一個鏈表依然有序,要求用遞歸方法進行。

          歸并排序,應(yīng)該比較簡單。要注意的是如果一個鏈表為空,那么可以簡單的把另一個直接鏈過去了。

          主站蜘蛛池模板: 石渠县| 灵武市| 吐鲁番市| 茂名市| 武冈市| 东丰县| 罗甸县| 喀喇沁旗| 阳东县| 彭州市| 荆门市| 酉阳| 凉城县| 盘山县| 镇赉县| 崇义县| 进贤县| 神池县| 治多县| 隆昌县| 乌恰县| 洪湖市| 安康市| 潜山县| 黎城县| 吉隆县| 长春市| 米泉市| 通化县| 东莞市| 米脂县| 永定县| 镇巴县| 五家渠市| 洞口县| 平塘县| 富民县| 道真| 新和县| 绥滨县| 桐柏县|