首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹網(wǎng)校 - 團(tuán)購 - 書城 - 模考 - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁網(wǎng)校萬題庫直播雄鷹網(wǎng)校團(tuán)購書城模考論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托?荚
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級
零起點(diǎn)德語
等級考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會計(jì)職稱
法律顧問
ACCA考試
初級會計(jì)職稱
資產(chǎn)評估師
高級經(jīng)濟(jì)師
注冊會計(jì)師
高級會計(jì)師
美國注冊會計(jì)師
審計(jì)師考試
國際內(nèi)審師
注冊稅務(wù)師
理財(cái)規(guī)劃師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
注冊給排水
造價員考試
注冊計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評價師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請
英語學(xué)習(xí)
思想?yún)R報
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員 > 正文

2015年軟件水平考試程序員精選題(9)

考試吧整理“2015年軟件水平考試程序員精選題(9)”供考生參考,更多軟件水平考試資訊和備考資料請關(guān)注考試吧軟件水平考試網(wǎng)。

  查看匯總:2015軟件水平考試程序員精選題匯總

  -反轉(zhuǎn)鏈表

  題目:輸入一個鏈表的頭結(jié)點(diǎn),反轉(zhuǎn)該鏈表,并返回反轉(zhuǎn)后鏈表的頭結(jié)點(diǎn)。鏈表結(jié)點(diǎn)定義如下:

  struct ListNode

  {

  int m_nKey;

  ListNode* m_pNext;

  };

  分析:這是一道廣為流傳的微軟面試題。由于這道題能夠很好的反應(yīng)出程序員思維是否嚴(yán)密,在微軟之后已經(jīng)有很多公司在面試時采用了這道題。

  為了正確地反轉(zhuǎn)一個鏈表,需要調(diào)整指針的指向。與指針操作相關(guān)代碼總是容易出錯的,因此最好在動手寫程序之前作全面的分析。在面試的時候不急于動手而是一開始做仔細(xì)的分析和設(shè)計(jì),將會給面試官留下很好的印象,因?yàn)樵趯?shí)際的軟件開發(fā)中,設(shè)計(jì)的時間總是比寫代碼的時間長。與其很快地寫出一段漏洞百出的代碼,遠(yuǎn)不如用較多的時間寫出一段健壯的代碼。

  為了將調(diào)整指針這個復(fù)雜的過程分析清楚,我們可以借助圖形來直觀地分析。假設(shè)下圖中l(wèi)、m和n是三個相鄰的結(jié)點(diǎn):

  aßbß…ßl mànà…

  假設(shè)經(jīng)過若干操作,我們已經(jīng)把結(jié)點(diǎn)l之前的指針調(diào)整完畢,這些結(jié)點(diǎn)的m_pNext指針都指向前面一個結(jié)點(diǎn)。現(xiàn)在我們遍歷到結(jié)點(diǎn)m。當(dāng)然,我們需要把調(diào)整結(jié)點(diǎn)的m_pNext指針讓它指向結(jié)點(diǎn)l。但注意一旦調(diào)整了指針的指向,鏈表就斷開了,如下圖所示:

  aßbß…lßm nà…

  因?yàn)橐呀?jīng)沒有指針指向結(jié)點(diǎn)n,我們沒有辦法再遍歷到結(jié)點(diǎn)n了。因此為了避免鏈表斷開,我們需要在調(diào)整m的m_pNext之前要把n保存下來。

  接下來我們試著找到反轉(zhuǎn)后鏈表的頭結(jié)點(diǎn)。不難分析出反轉(zhuǎn)后鏈表的頭結(jié)點(diǎn)是原始鏈表的尾位結(jié)點(diǎn)。什么結(jié)點(diǎn)是尾結(jié)點(diǎn)?就是m_pNext為空指針的結(jié)點(diǎn)。

  基于上述分析,我們不難寫出如下代碼:

  ///////////////////////////////////////////////////////////////////////

  // Reverse a list iteratively

  // Input: pHead - the head of the original list

  // Output: the head of the reversed head

  ///////////////////////////////////////////////////////////////////////

  ListNode* ReverseIteratively(ListNode* pHead)

  {

  ListNode* pReversedHead = NULL;

  ListNode* pNode = pHead;

  ListNode* pPrev = NULL;

  while(pNode != NULL)

  {

  // get the next node, and save it at pNext

  ListNode* pNext = pNode->m_pNext;

  // if the next node is null, the currect is the end of original

  // list, and it's the head of the reversed list

  if(pNext == NULL)

  pReversedHead = pNode;

  // reverse the linkage between nodes

  pNode->m_pNext = pPrev;

  // move forward on the the list

  pPrev = pNode;

  pNode = pNext;

  }

  return pReversedHead;

  }

  擴(kuò)展:本題也可以遞歸實(shí)現(xiàn)。

  相關(guān)推薦:

  2015年軟考信息技術(shù)處理員考前知識點(diǎn)總結(jié)匯總

  2015年軟件水平考試《程序員》提高練習(xí)題匯總

  2015軟件水平考試《程序員》知識點(diǎn)總結(jié)匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
Copyright © 2004- 考試吧軟件水平考試網(wǎng) All Rights Reserved 
中國科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧