實(shí)驗(yàn)一 棧和隊(duì)列實(shí)驗(yàn)_第1頁
實(shí)驗(yàn)一 棧和隊(duì)列實(shí)驗(yàn)_第2頁
實(shí)驗(yàn)一 棧和隊(duì)列實(shí)驗(yàn)_第3頁
實(shí)驗(yàn)一 棧和隊(duì)列實(shí)驗(yàn)_第4頁
實(shí)驗(yàn)一 棧和隊(duì)列實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)一 棧和隊(duì)列一、實(shí)驗(yàn)?zāi)康?、通過幾個(gè)小代碼的編寫,熟悉棧和隊(duì)列2、熟悉VC環(huán)境(VC 6或VC.net),會(huì)在其中編寫調(diào)試運(yùn)行c+代碼,并理解多文件項(xiàng)目的組織,為以后的實(shí)驗(yàn)編程做準(zhǔn)備3、初步掌握在VC環(huán)境中進(jìn)行代碼的調(diào)試二、實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)題目文檔中有4個(gè)題目,其中題目1、2、3是關(guān)于棧的,題目4是關(guān)于隊(duì)列的 ,要求一次實(shí)驗(yàn)完成所有的題目1.題目一讀懂實(shí)驗(yàn)題目文檔中的Task1中的程序(使用棧進(jìn)行序列的順序反轉(zhuǎn)),并編譯運(yùn)行,通過此了解如果要實(shí)現(xiàn)一個(gè)棧類,里面需要的基本的成員函數(shù)。這個(gè)程序在書上也有。(1)由于程序是用了STL(標(biāo)準(zhǔn)模板庫,可以簡(jiǎn)單的看成是一個(gè)函數(shù)庫,在其中有各種有用的類、函

2、數(shù)和算法),棧在其中有實(shí)現(xiàn)。棧在STL中的實(shí)現(xiàn)用到了類模板,也就是說其棧是獨(dú)立于類型的,模板提供參數(shù)化類型,也就是能將類型名作為參數(shù)傳遞給接收方來建立類或函數(shù)。比如stack<double> numbers;中就是聲明了一個(gè)棧,這個(gè)棧中存放的數(shù)據(jù)類型為double。(2)注意,實(shí)驗(yàn)題目文檔中的這個(gè)程序有點(diǎn)語法錯(cuò)誤,要使這個(gè)程序能運(yùn)行,首先要改正語法錯(cuò)誤。另外,如果要使用c+的輸入輸出需要加上幾行語句如下,因?yàn)閏out和cin是在命名空間std中的:#include <iostream>using namespace std;2.題目二、題目三這里把題目二和題目三合成了一

3、個(gè)題目,在一個(gè)程序中完成就可以了。實(shí)現(xiàn)一個(gè)自己的簡(jiǎn)單的棧,并用于替換題目一中對(duì)標(biāo)準(zhǔn)模板庫中的棧的使用,同時(shí)對(duì)自己實(shí)現(xiàn)的棧的功能進(jìn)行擴(kuò)充,添加實(shí)現(xiàn)如下幾個(gè)函數(shù)(a) clear(b) full(c) size。使用新添加的棧函數(shù),顯示在進(jìn)行數(shù)字序列反轉(zhuǎn)時(shí)輸入的十進(jìn)制數(shù)的個(gè)數(shù)。注意:實(shí)驗(yàn)題目文檔中已經(jīng)把大部分的代碼都給出來了。自己實(shí)現(xiàn)的棧不要求用類模板,如果能用,當(dāng)然更好。??梢杂面湵砘蛘邤?shù)組實(shí)現(xiàn),這里是用數(shù)組實(shí)現(xiàn)。 注意:實(shí)驗(yàn)題目中給出的僅僅是部分的代碼,自己還需要在看懂的前提下,進(jìn)行修改補(bǔ)充,才可以達(dá)到具體的要求,不明白的地方也可以參考書上這一部分。3.題目四這個(gè)題目的主要目的是熟悉隊(duì)列這個(gè)數(shù)

4、據(jù)結(jié)構(gòu),而為了說明問題又用了一個(gè)模擬飛機(jī)場(chǎng)的程序,因此這個(gè)實(shí)驗(yàn)項(xiàng)目在程序的找錯(cuò)誤調(diào)試編譯,讀源代碼上對(duì)大家也是一個(gè)鍛煉。仔細(xì)閱讀教科書中關(guān)于模擬飛機(jī)場(chǎng)這一部分,閱讀源代碼。實(shí)驗(yàn)題目中的源代碼并不完整并且有些語法等等的錯(cuò)誤,其缺少生成隨機(jī)數(shù)這一個(gè)類,下面會(huì)把這個(gè)類給大家,有興趣的話,可以看教科書中的附錄,有些介紹。另外大家把代碼讀懂后就可以復(fù)制粘貼到編譯環(huán)境中了,主要是讀懂代碼。但是,一定要知道,這樣直接粘貼的代碼并不能直接運(yùn)行,需要修改其中的一些bug。這個(gè)題目的要求是能讀懂代碼,明白實(shí)現(xiàn),而且要把代碼放到VC中編譯調(diào)試,使其能正常運(yùn)行。并通過此,能對(duì)程序的編譯調(diào)試查找錯(cuò)誤較為熟悉。注意,一定

5、要使警告也為0個(gè)。下面是Random類,用于生成隨機(jī)數(shù),核心代碼來自教科書的附錄/Random.h#ifndef RANDOM_H_#define RANDOM_H_class Randompublic:Random(bool pseudo=true);/declare random-number generation methods heredouble random_real();int poisson(double mean);private:int reseed(); /re-randomize the seedint seed;int multiplier,add_on;/const

6、ants for use in arithmetic operations;#endif/Random.cpp#include "Random.h"#include <limits.h>#include <time.h>#include <math.h>int Random:reseed()/Post:The seed is replaced by a psuedorandom successorseed=seed*multiplier+add_on;return seed;Random:Random(bool pseudo)/*Post

7、:The values of seed ,add-on, and multiplier are initialized. The seed is initialized randomly only if pseudo=false*/if (pseudo)seed=1;else seed=static_cast<int>(time(NULL)%INT_MAX);multiplier=2743;add_on=5923;double Random:random_real()/*Post:A random real number between 0 and 1 is returned*/d

8、ouble max=INT_MAX+1.0;double temp=reseed();if (temp<0)temp=temp+max;return temp/max;int Random:poisson(double mean)/*Post:A random integer, reflecting a Poisson distribution with parameter mean, is return.*/double limit=exp(-mean);double product=random_real();int count=0;while (product>limit)c

9、ount+;product*=random_real();return count;三、實(shí)驗(yàn)附錄1. VC 6環(huán)境中編寫c+控制臺(tái)程序步驟下面具體了解一下,如何在VC環(huán)境中用c+語言編程,開發(fā)控制臺(tái)應(yīng)用程序。主要的步驟分為:1.新建項(xiàng)目2.添加文件到新建的項(xiàng)目中3.編寫代碼4.編譯鏈接生成可執(zhí)行文件其中,代碼的調(diào)試也是一個(gè)很重要的過程。(1)新建工程圖1注意,在上圖中一定要選擇Win32 Console Application,這樣才能編寫控制臺(tái)應(yīng)用程序。在圖1的中的Project name下面的文本框填寫自己工程的名字,在Location中選擇工程要存放在硬盤的什么地方。填好這些項(xiàng)后,OK按

10、鈕變?yōu)榭捎茫@時(shí),可以點(diǎn)擊OK,進(jìn)入下一步。圖2在圖2中,默認(rèn)選擇An empty project,保持默認(rèn)選項(xiàng),點(diǎn)擊Finish。這樣,就建立了一個(gè)空白的控制臺(tái)工程項(xiàng)目。以后可以往這個(gè)空白的項(xiàng)目中添加現(xiàn)有文件(已經(jīng)編寫好的.cpp或者.h文件),或者是添加新的空白文件(已經(jīng)編寫好的.cpp或者.h文件),用于在其上編寫自己的代碼。(2)往工程中添加文件應(yīng)該注意,剛才我們選擇的是新建一個(gè)空白的工程,因此,新建的工程中是沒有任何.cpp或者.h文件的,現(xiàn)在需要往工程中添加代碼文件。在工程已經(jīng)建立的情況下,有兩種方法往工程項(xiàng)目中添加代碼,一種是添加空白的.cpp文件和.h文件,然后自己在這些空白的

11、文件中編寫代碼,另一種是添加現(xiàn)有的.cpp文件和.h文件。若要把添加到工程中的.cpp或者.h文件從工程中刪除,只需要在workspace中選中相應(yīng)的文件,按下鍵盤上的delete鍵,就可以了。不過,注意,此時(shí)文件僅僅是被從工程中移除了,還在硬盤中存在,如果要徹底將文件刪除,需要在硬盤上文件保存的地方進(jìn)行刪除。(a)添加空白的.c文件和.h文件選擇File菜單項(xiàng)中的New添加.cpp文件的方法如下:圖3在圖3的左邊選擇C+ Source File,右邊給這個(gè)文件取名,這里取名為Demo.cpp。填寫后,點(diǎn)擊OK按鈕就可以了。添加.h文件的方法如下:圖4圖4中,選擇C/C+ Header Fil

12、e,跟上面一樣,可以添加頭文件。(b)添加現(xiàn)存的.c文件和.h文件需要在哪個(gè)文件夾下添加文件,直接在那個(gè)文件夾上點(diǎn)擊右鍵,如圖選擇,就可以在隨后彈出的對(duì)話框中選擇相應(yīng)的文件了。(3)VC的IDE界面的簡(jiǎn)單介紹下面簡(jiǎn)單的介紹一下,VC的IDE界面圖5如圖5所示,VC的IDE界面和傳統(tǒng)的Windows程序一樣,包含有菜單條、工具條和狀態(tài)條。除了這些,主界面共分為三大部分,分別是Workspace窗口、工作區(qū)和輸出窗口。其中,Workspace窗口在圖5的左半部分,包括FileView頁面和ClassView頁面,若是編寫c程序,只涉及到FileView頁面。在FileView頁面中,對(duì)加入工程中的

13、文件(包括.h和.cpp文件)進(jìn)行了組織,分為3個(gè)文件夾,其中,Source Files中存放的是.cpp文件,Header Files中存放的是.h文件,Resource Files中存放的是資源文件,在數(shù)據(jù)結(jié)構(gòu)a的實(shí)驗(yàn)中并不會(huì)涉及到,因此跟我們相關(guān)的只有兩個(gè)文件夾,Source Files文件夾和Header Files文件夾,這兩個(gè)文件夾對(duì)源文件做了很好的組織。如果你愿意或者說是為了滿足編程的需要,也可以在其中新建新的文件夾,管理你的代碼文件。工作區(qū),在窗口的右邊,在其中能打開多個(gè)代碼頁面,可以方便的對(duì)代碼進(jìn)行編輯修改。輸出窗口在窗口的下部,這個(gè)窗口在對(duì)程序進(jìn)行編譯鏈接或者進(jìn)行調(diào)試的時(shí)候

14、會(huì)出現(xiàn),顯示一些信息。(4)編譯鏈接運(yùn)行程序要對(duì)編寫好的程序進(jìn)行編譯鏈接,可以使用菜單項(xiàng)中的Build菜單,也可以使用工具條中的工具。Build菜單是VC提供的輔助編程的主要菜單,用于對(duì)項(xiàng)目進(jìn)行編譯,連接并生成可執(zhí)行文件。其中的幾個(gè)子菜單的簡(jiǎn)單介紹如下:Compile:編譯當(dāng)前激活的源文件或頭文件Build:編譯并鏈接當(dāng)前激活的項(xiàng)目配置Rebuild All:對(duì)當(dāng)前激活的項(xiàng)目配置先Clean,再BuildSet Active Configuration:設(shè)置哪個(gè)項(xiàng)目配置被激活(其中,默認(rèn)的是生成Debug版本)工具條如下:其中,第一個(gè)圖標(biāo)是Compile,第二個(gè)圖標(biāo)是Build,第三個(gè)是sto

15、p build,第四個(gè)是執(zhí)行程序(如果新修改好的程序沒有編譯和鏈接的話,會(huì)有提示,先對(duì)程序重新編譯鏈接,再執(zhí)行),第五個(gè)是調(diào)試,第六個(gè)是設(shè)置或移除斷點(diǎn)。(5)調(diào)試程序調(diào)試程序很重要,有不少的方法,比如,可以用printf語句輸出中間結(jié)果進(jìn)行調(diào)試。VC 6中集成了調(diào)試器,可以用VC 6的調(diào)試器設(shè)置斷點(diǎn),進(jìn)行調(diào)試,觀察中間結(jié)果信息。主要的快捷鍵和解釋如下:F9:設(shè)置斷點(diǎn)F5:調(diào)試運(yùn)行F10:?jiǎn)尾綀?zhí)行,遇到函數(shù)不進(jìn)入函數(shù)內(nèi)部F11:?jiǎn)尾綀?zhí)行,遇到函數(shù)進(jìn)入函數(shù)內(nèi)部Shift+F11:跳出函數(shù)熟練運(yùn)行這些快捷鍵,在調(diào)試的時(shí)候會(huì)感覺方便些的。在調(diào)試的時(shí)候會(huì)有各種窗口,對(duì)中間值進(jìn)行觀察,這樣便于進(jìn)行程序的調(diào)

16、試。調(diào)試的時(shí)候,會(huì)有一個(gè)調(diào)試的工具欄,如果沒有出現(xiàn),則可以用如下方法調(diào)出來:另外,注意一點(diǎn),最好調(diào)試結(jié)果是輸出窗口中顯示的信息中警告也為0個(gè),因?yàn)榫幾g器在編譯我們的程序的時(shí)候,有時(shí)候檢查得不是會(huì)很準(zhǔn)確的或者說也跟設(shè)置的警告的級(jí)別有關(guān)系,有些警告,在運(yùn)行的時(shí)候就可能會(huì)產(chǎn)生問題。因此,最好是編寫的程序在編譯鏈接的時(shí)候顯示的錯(cuò)誤和警告都是0個(gè)。2. VC.net環(huán)境中編寫c+控制臺(tái)程序步驟在VC.net環(huán)境中編寫c+控制臺(tái)應(yīng)用程序跟在VC 6中編寫C+控制臺(tái)應(yīng)用程序差不多。主要是界面的不一致而已,下面簡(jiǎn)單的介紹一下。 首先,打開VC.net,在開始頁面中點(diǎn)擊“新建項(xiàng)目”按鈕。在上圖中選擇Win32中

17、的Win32控制臺(tái)項(xiàng)目,選擇控制臺(tái)項(xiàng)目,這樣能把精力專注在算法的實(shí)現(xiàn)上,而不是界面的開發(fā)。注意,需要選中附加選項(xiàng)中的“空項(xiàng)目”的復(fù)選框,這樣會(huì)生成一個(gè)空白的項(xiàng)目。點(diǎn)擊“完成”按鈕。這樣一個(gè)空白的項(xiàng)目就建立好了。剩下的步驟,跟在VC 6中差不多了,就不詳細(xì)介紹了,如果有問題,可以在實(shí)驗(yàn)課的時(shí)候詢問。3. .h文件和.c或者.cpp文件的一些規(guī)范1.使用頭文件每個(gè)c+/c程序通常分為兩個(gè)文件。一個(gè)文件用于保存程序的聲明(declaration),稱為頭文件。另一個(gè)用于保存程序的實(shí)現(xiàn)(implementation),稱為定義(definition)文件。頭文件中只存放“聲明”而不存放“定義”。要學(xué)會(huì)

18、使用頭文件,不要把所有的代碼都編寫到一個(gè).c或者.cpp文件中,雖然在程序短小的時(shí)候,這樣做也許也是一個(gè)不錯(cuò)的選擇,但是,當(dāng)程序的規(guī)模稍微大些的時(shí)候,應(yīng)該學(xué)會(huì)使用頭文件,并且不要把所有的代碼都集中到一個(gè).c或者.cpp文件中。使用頭文件的原因,或者說是作用如下:(1)通過頭文件來調(diào)用庫功能。在很多場(chǎng)合,源代碼不便或不準(zhǔn)向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫即可。用戶只需要按照頭文件中的接口聲明來調(diào)用庫功能,而不必關(guān)心接口怎么實(shí)現(xiàn)。編譯器會(huì)從庫中提取相應(yīng)的代碼。(2)頭文件能加強(qiáng)類型安全檢查。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這一簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。在頭文件中,為了防止頭文件被重復(fù)引用,應(yīng)當(dāng)用ifndef/define/endif結(jié)構(gòu)產(chǎn)生預(yù)處理塊。用 #include <filename.h> 格式來引用標(biāo)準(zhǔn)庫的頭文件(編譯器將從標(biāo)準(zhǔn)庫目錄開始搜索)。用 #include “filename.h” 格式來引用非標(biāo)準(zhǔn)庫的頭文件(編譯器將從用戶的工作目錄開始搜索)。一個(gè)頭文件結(jié)構(gòu)的例子如下:頭文件結(jié)構(gòu)( graphics.h )#ifndefGRAPHICS_H/ 防止graphics.h被重復(fù)引用#define

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論