freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c數(shù)據(jù)結(jié)構(gòu)算法演示系統(tǒng)(doc畢業(yè)設(shè)計論文)(編輯修改稿)

2025-07-25 08:22 本頁面
 

【文章內(nèi)容簡介】 幫助幫助圖31 系統(tǒng)模塊圖::主菜單位于窗體的標(biāo)題欄下面,而彈出式菜單則是當(dāng)鼠標(biāo)右擊某控件的時候自動彈出來。TMainMenu組件:主菜單位于Standard組件中,用它可以來設(shè)計應(yīng)用程序菜單欄中的菜單,TMainMenu的主要屬性、方法如下:(1) AutoHotKey屬性用來設(shè)置菜單選項(xiàng)的快捷鍵是否可以自動重置。(2) Handle屬性可以用來為菜單提供一個對Windows菜單句柄的訪問。(3) Images屬性,用來指定在各個菜單選項(xiàng)旁邊的圖象列表。(4) Items屬性,該屬性提供了可以訪問菜單選項(xiàng)元素的描述,用它可以來訪問選項(xiàng)的各個信息。設(shè)計的時候可以在Object Inspector里單擊Items屬性右邊的…按鈕,然后對其屬性進(jìn)行設(shè)計。(5) Merge方法,將非MDI應(yīng)用程序中窗體的主菜單合并到另外一個窗體的主菜單。(6) UnMerge方法,用來將非MDI應(yīng)用程序中已經(jīng)合并的主菜單分開,回復(fù)到合并前的狀態(tài)。設(shè)計主菜單:(1) 單擊Standard組件中的TMainMenu,放到FORM框中;(2) 對其屬性進(jìn)行相應(yīng)的設(shè)置;(3) 單擊【文件】選項(xiàng)可以看到下拉了一個其子菜單,支持點(diǎn)擊其子菜單的話可以增加其子菜單選項(xiàng)?;蛘唿c(diǎn)擊其右邊的菜單的話可以設(shè)計其下一個選項(xiàng),如果在Caption中設(shè)置標(biāo)題為減號,則會得到一個分界線;(4) 雙擊菜單選項(xiàng)可以得到其Click事件,當(dāng)用戶選中了該選項(xiàng)的時候即發(fā)生該事件,在這里加特殊處理的代碼。比如雙擊【退出】控件,加代碼如下:Void_fastcall TForm1::S1Click(TObject*Sender){ShowMessage(“選項(xiàng)中退出選項(xiàng)”)}現(xiàn)在主菜單已經(jīng)有個雛形了。彈出式菜單的設(shè)計:TPopupMenu組件,彈出式菜單,位于Standard組件頁中,用于設(shè)計當(dāng)鼠標(biāo)右擊某些控件的時候彈出的菜單,彈出式菜單的設(shè)計與主菜單非常類似,因此以下只討論它的屬性方法和事件。TPopupMenu的主要屬性、方法和事件:(1) Alignment屬性,用來設(shè)置當(dāng)用戶右擊時,彈出菜單顯示的位置,它的取值分別為:paLeft、paCenter、paRight,其含義分別為:彈出式菜單左上角位于鼠標(biāo)指針下(Alignment的默認(rèn)值)、彈出式彩旦中央位于鼠標(biāo)指針下、彈出式菜單右上角位于鼠標(biāo)指針下;(2) AutoPopup屬性,為True時,當(dāng)用戶右擊控件的時候,自動彈出菜單,True是AutoPopup的默認(rèn)值,為False時,當(dāng)用戶右擊控件的時候,必須通過代碼來控制菜單的彈出,用Popup方法實(shí)現(xiàn)之;(3) Popup方法,用來將彈出式菜單顯示到屏幕上;(4) OnPopup事件,在菜單剛要顯示到屏幕上之前發(fā)生該事件。在應(yīng)用程序中建立如下菜單系統(tǒng):主菜單含有四個項(xiàng),分別為“程序”、“數(shù)據(jù)結(jié)構(gòu)”、“操作”、“幫助”,如圖32所示。 圖32 數(shù)據(jù)結(jié)構(gòu)算法演示系統(tǒng)界面圖其中“程序”下拉菜單有“退出”一項(xiàng);“數(shù)據(jù)結(jié)構(gòu)”中包括“線性鏈表”、“堆棧和隊(duì)列”、“樹”、“圖”等四項(xiàng);“操作”下拉菜單中包括“線性表說明”、“堆棧說明”、“隊(duì)列說明”、“樹說明”、“圖說明”等五項(xiàng);“幫助”下拉菜單中包括“關(guān)于”和“幫助”兩項(xiàng)。我們希望該菜單系統(tǒng)能實(shí)現(xiàn)以下的功能:當(dāng)選擇“退出”按鈕時即可退出該程序。當(dāng)選擇“數(shù)據(jù)結(jié)構(gòu)”“圖”“圖表示”時,能打開圖表示的算法模塊。在設(shè)計過程中,考慮到在“操作”菜單的相關(guān)說明,要在系統(tǒng)中有相應(yīng)的顯示位置,為此我們在模塊的中間部分設(shè)計了兩個備注框,用來顯示各種算法的操作說明。在外觀上,我們選擇了菜單的結(jié)構(gòu)設(shè)計,其中第一用做顯示說明的對話框,下一個用來顯示修改說明的對話框,以及在頂部設(shè)計了一條“歡迎使用數(shù)據(jù)結(jié)構(gòu)演示系統(tǒng)”的歡迎語。為了能即時的修改操作說明中的相關(guān)內(nèi)容,我們設(shè)計了修改,保存等相關(guān)按鈕。 棧是限定僅在表尾進(jìn)行插入或刪除操作的線性表。表尾稱為棧頂,表頭稱為棧底,不含元素的空表稱空棧。棧的修改是按后進(jìn)先出的原則進(jìn)行的,因此,棧又稱為后進(jìn)先出的線性表(簡稱LIFO結(jié)構(gòu)),它的特點(diǎn)可用圖33來形象地表示。棧的基本操作除了在棧頂進(jìn)行插入或刪除之外,還有棧的初始化、判空及取棧頂元素等。ana1a2……...棧底棧頂頂...出棧進(jìn)棧 圖33 棧的示意圖棧的基本操作算法描述如下:Status InitStack(SqStack amp。S){//構(gòu)造一個空棧S=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType))。if(!)exit(overflow)。 //存儲分配失效=。=STACK_INIT_SIZE。return OK。}//InitStack Status GettopLStack (Linkstack amp。S,ElemType amp。e){//若棧不為空,則用e返回S的棧頂元素,并返回OK,否則返回ERROR.if(S==NULL) return ERROR。e=Sdata。return(OK)。}//GettopLStack Status Push(SqStack amp。S,ElemType e){//插入元素e為新的棧頂元素if(=){//棧滿,追加存儲空間=(ElemType*)realloc(,(+ STACKINCREMENT)*sizeof(ElemType))。if(!)exit(OVERFLOW)。//存儲分配失敗=+。+=STACKINCREMENT。}*++=e。return OK。}//status Pop(SqStack amp。S,ElemType amp。e){ //若棧不為空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERRORif(==)return ERROR。e=*。return OK。}//Pop int Empty(SqStack S){//若棧為空,則返回0,否則返回1if(==) return (0)。else return (1)。} int Full(SqStack S){//若棧為滿,則返回0,否則返回1if()= return (0)。else return (1)。} 根據(jù)以上的算法操作現(xiàn)設(shè)計如下:在堆棧模塊中首先引入一個StringGrid1來代替堆棧中的存儲棧,為能判斷棧是空的還是滿的,設(shè)計了兩個標(biāo)簽“FULL”和“EMPTY”來顯示此時棧的情況,為了使用者能更好的理解指針在棧操作中的定義,設(shè)計了Label來顯示指針情況,以及顯示取出值,建立的Edit用來輸入進(jìn)棧元素,要使堆棧能滿足出棧操作,設(shè)計了一個“取出”按鈕,來完成出棧操作,每點(diǎn)擊一次,指針先減1,然后取出棧內(nèi)元素。步驟如下:打開一個Form1,將其Caption設(shè)置為:“堆?;靖拍睢?,并分別在Form1中添加StringGrid1,11個Label標(biāo)簽,一個文本編輯框(Edit),兩個按鈕。 建立StringGrid1,分別設(shè)置Name為:ssg;ColCount為:1;RowCount為:5;Font為:設(shè)置字體大小為12;Label1~6,分別設(shè)置Name為:t_t_ t_t_4;Caption為:t_1為Top=1其余為空白;AutoSize為:false;Label7,設(shè)置Caption為:按Enter鍵輸入;Label8,設(shè)置Name為:le;Caption為:Empty; Color為:c1Red;Label9~11,設(shè)置Name為:if、outr、outv;Caption為:空白;Edit1,設(shè)置Name為:inp;Text為:空白;Button1,設(shè)置Name為:pop;Caption為:取出;Button2,設(shè)置Name為:end;Caption為:結(jié)束。根據(jù)以上的控件及其屬性值,設(shè)計了如圖34的界面: 圖34 堆棧界面圖在菜單中,我們通過調(diào)用WinExec函數(shù),以執(zhí)行外部命令的方式,來完成基本堆棧的演示。單擊窗體中的Edit對象inp,再單擊對象檢視窗口面板中OnKeyUp事件進(jìn)入程序編輯窗口,輸入程序。在初步編寫完本程序后,在經(jīng)過幾次調(diào)試,堆棧的程序設(shè)計結(jié)構(gòu)就已經(jīng)設(shè)計好了,以下是窗體及控件的運(yùn)行結(jié)果: 圖35 進(jìn)棧操作 圖36 棧滿當(dāng)輸入的元素超過棧的存儲范圍時,就會出現(xiàn)棧滿的情況,即top=base,如圖36所示 圖 37 堆棧取出圖 圖38??债?dāng)把棧內(nèi)的所有元素全部取出后,棧為空,即topbase=M,如圖38所示。開 始輸入數(shù)據(jù)是否溢出棧 滿YES取 出NOYES停 止NO是否棧 空 圖39 基本堆棧流程圖如圖35所示,并按照圖39的流程操作。在模塊左下的空白框里輸入堆棧內(nèi)容后,安“Enter”,接著系統(tǒng)自動判斷棧是否滿,當(dāng)棧滿時,程序會顯示紅色的“FULL”,如果棧未滿,可以繼續(xù)輸入元素到堆棧里。點(diǎn)一次“取出”按鈕,系統(tǒng)會按照“后進(jìn)先出”的原則,取出棧內(nèi)的一個元素,直到棧被取空為止。點(diǎn)擊結(jié)束退出該模塊。堆棧(Stack)是有序列表(Order List)。堆棧具有先進(jìn)后出的特性(First In Last Out),其輸入與輸出都在同一端,可以想象成是堆積木或洗碗盤一樣;于是利用BCB圖形用戶接口,設(shè)計出這個具有互動效果的程序。和棧相反,隊(duì)列是一種先進(jìn)先出(first in first out,縮寫為FIFO)的線性表。它只允許在表的一端進(jìn)行插入,而在另一端刪除元素。在隊(duì)列中,允許插入的一端本叫做隊(duì)尾(rear),允許刪除的一端則稱為隊(duì)頭(front)。假設(shè)隊(duì)列為Q=(a1,a2,…,an),那么,a1就是隊(duì)頭元素,an則是隊(duì)尾元素。隊(duì)列中的元素是按照a1,a2,…,an的順序進(jìn)入的,退出隊(duì)列也只能按照這個次序依次退出,也就是說,只有在a1,a2,…,an1都離開隊(duì)列之后,an才能退出隊(duì)列。圖310是隊(duì)列的示意圖。a1 a2 a3…………………….an 入隊(duì)出隊(duì)frontrear隊(duì)列Q=(a1,a2,……,an) 圖310 隊(duì)列的示意圖隊(duì)列的基本操作算法描述如下:初始化:void InitQueue ( LinkQueue *Q ) { Qrear = Qfront = NULL。}隊(duì)空:int QueueEmpty ( LinkQueue *Q ) { return Qfront == NULL。}入隊(duì):int EnQueue ( LinkQueue *Q, QueueData x ) { QueueNode *p = ( QueueNode * ) malloc ( sizeof ( QueueNode ) )。 pdata = x。 plink = NULL。 if ( Qfront == NULL ) //空,創(chuàng)建第一個結(jié)點(diǎn) Qfront = Qrear = p。 else Qrearlink = p。 //入隊(duì)Qrear =p。 return 1。}出隊(duì):int DeQueue ( LinkQueue *Q, QueueData amp。x) {//刪去隊(duì)頭結(jié)點(diǎn),并返回隊(duì)頭元素的值 if ( QueueEmpty (Q) ) return 0。 //判隊(duì)空 QueueNode *p = Qfront。 x = pdata。 /
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1