2->3->4->5通過反轉(zhuǎn)后成為5->4->3->2->1。最容易想到的方法遍歷一遍鏈表,利用一個輔助指針">
c++筆試題匯總-最新

c++筆試題匯總-最新

ID:19541442

大小:695.50 KB

頁數(shù):279頁

時間:2018-10-03

c++筆試題匯總-最新_第1頁
c++筆試題匯總-最新_第2頁
c++筆試題匯總-最新_第3頁
c++筆試題匯總-最新_第4頁
c++筆試題匯總-最新_第5頁
資源描述:

《c++筆試題匯總-最新》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、c++筆試題匯總最新35頁①鏈表反轉(zhuǎn)單向鏈表的反轉(zhuǎn)是一個經(jīng)常被問到的一個面試題,也是一個非?;A(chǔ)的問題。比如一個鏈表是這樣的:1->2->3->4->5通過反轉(zhuǎn)后成為5->4->3->2->1。最容易想到的方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當前指針指向的下一個元素,然后將當前節(jié)點元素的指針反轉(zhuǎn)后,利用已經(jīng)存儲的指針往后面繼續(xù)遍歷。源代碼如下:1.structlinka{2.intdata;3.linka*next;4.};5.voidreverse(linka*&head){6.if(head==NULL)7.??????????????????return;8

2、.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)當前節(jié)點之前先調(diào)用遞歸函數(shù)反轉(zhuǎn)后續(xù)節(jié)點。源代碼如下。不過這個方法有一個缺點,就是在反轉(zhuǎn)后的最后一個結(jié)點會形成一個環(huán),所以必須將函數(shù)的返回的節(jié)點的next域置為NULL。因為要改變head指針,所以我用

3、了引用。算法的源代碼如下:2791.linka*reverse(linka*p,linka*&head)2.{3.if(p==NULL

4、

5、p->next==NULL)4.{5.??head=p;6.??returnp;7.}8.else9.{10.??linka*tmp=reverse(p->next,head);11.??tmp->next=p;12.??returnp;13.}14.}②已知String類定義如下:classString{public:String(constchar*str=NULL);//通用構(gòu)造函數(shù)String(constString&another)

6、;//拷貝構(gòu)造函數(shù)~String();//析構(gòu)函數(shù)String&operater=(constString&rhs);//賦值函數(shù)private:char*m_data;//用于保存字符串};嘗試寫出類的成員函數(shù)實現(xiàn)。答案:String::String(constchar*str){if(str==NULL)//strlen在參數(shù)為NULL時會拋異常才會有這步判斷{m_data=newchar[1];m_data[0]='