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

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

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

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

  用兩個(gè)棧實(shí)現(xiàn)隊(duì)列

  題目:某隊(duì)列的聲明如下:

  template class CQueue

  {

  public:

  CQueue() {}

  ~CQueue() {}

  void appendTail(const T& node); // append a element to tail

  void deleteHead(); // remove a element from head

  private:

  T>m_stack1;

  T>m_stack2;

  };

  分析:從上面的類的聲明中,我們發(fā)現(xiàn)在隊(duì)列中有兩個(gè)棧。因此這道題實(shí)質(zhì)上是要求我們用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列。相信大家對(duì)棧和隊(duì)列的基本性質(zhì)都非常了解了:棧是一種后入先出的數(shù)據(jù)容器,因此對(duì)隊(duì)列進(jìn)行的插入和刪除操作都是在棧頂上進(jìn)行;隊(duì)列是一種先入先出的數(shù)據(jù)容器,我們總是把新元素插入到隊(duì)列的尾部,而從隊(duì)列的頭部刪除元素。

  我們通過一個(gè)具體的例子來分析往該隊(duì)列插入和刪除元素的過程。首先插入一個(gè)元素a,不妨把先它插入到m_stack1。這個(gè)時(shí)候m_stack1中的元素有{a},m_stack2為空。再插入兩個(gè)元素b和c,還是插入到m_stack1中,此時(shí)m_stack1中的元素有{a,b,c},m_stack2中仍然是空的。

  這個(gè)時(shí)候我們?cè)囍鴱年?duì)列中刪除一個(gè)元素。按照隊(duì)列先入先出的規(guī)則,由于a比b、c先插入到隊(duì)列中,這次被刪除的元素應(yīng)該是a。元素a存儲(chǔ)在m_stack1中,但并不在棧頂上,因此不能直接進(jìn)行刪除。注意到m_stack2我們還一直沒有使用過,現(xiàn)在是讓m_stack2起作用的時(shí)候了。如果我們把m_stack1中的元素逐個(gè)pop出來并push進(jìn)入m_stack2,元素在m_stack2中的順序正好和原來在m_stack1中的順序相反。因此經(jīng)過兩次pop和push之后,m_stack1為空,而m_stack2中的元素是{c,b,a}。這個(gè)時(shí)候就可以pop出m_stack2的棧頂a了。pop之后的m_stack1為空,而m_stack2的元素為{c,b},其中b在棧頂。

  這個(gè)時(shí)候如果我們還想繼續(xù)刪除應(yīng)該怎么辦呢?在剩下的兩個(gè)元素中b和c,b比c先進(jìn)入隊(duì)列,因此b應(yīng)該先刪除。而此時(shí)b恰好又在棧頂上,因此可以直接pop出去。這次pop之后,m_stack1中仍然為空,而m_stack2為{c}。

  從上面的分析我們可以總結(jié)出刪除一個(gè)元素的步驟:當(dāng)m_stack2中不為空時(shí),在m_stack2中的棧頂元素是最先進(jìn)入隊(duì)列的元素,可以pop出去。如果m_stack2為空時(shí),我們把m_stack1中的元素逐個(gè)pop出來并push進(jìn)入m_stack2。由于先進(jìn)入隊(duì)列的元素被壓到m_stack1的底端,經(jīng)過pop和push之后就處于m_stack2的頂端了,又可以直接pop出去。

  接下來我們?cè)俨迦胍粋(gè)元素d。我們是不是還可以把它push進(jìn)m_stack1?這樣會(huì)不會(huì)有問題呢?我們說不會(huì)有問題。因?yàn)樵趧h除元素的時(shí)候,如果m_stack2中不為空,處于m_stack2中的棧頂元素是最先進(jìn)入隊(duì)列的,可以直接pop;如果m_stack2為空,我們把m_stack1中的元素pop出來并push進(jìn)入m_stack2。由于m_stack2中元素的順序和m_stack1相反,最先進(jìn)入隊(duì)列的元素還是處于m_stack2的棧頂,仍然可以直接pop。不會(huì)出現(xiàn)任何矛盾。

  相關(guān)推薦:

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

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

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

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