




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五次實(shí)驗(yàn)報告一一順序棧、鏈棧的插入和刪除一需求分析1、在演示程序中,出現(xiàn)的元素以數(shù)字出現(xiàn)定義為 int型,2、演示程序在計算機(jī)終端上,用戶在鍵盤上輸入演示程序中規(guī)定的運(yùn)算命令, 相應(yīng)的輸入數(shù)據(jù)和運(yùn)算結(jié)果顯示在終端上3、順序棧的程序執(zhí)行的命令包括如下:(1)定義結(jié)構(gòu)體(2)順序棧的初始化及創(chuàng)建(3)元素的插入(4)元素的刪除(5)順序棧的打印結(jié)果3、鏈棧的程序執(zhí)行的命令包括如下:(1)定義結(jié)構(gòu)體(2)鏈棧的初始化及創(chuàng)建(3)元素的插入(4)元素的刪除(5)鏈棧的打印結(jié)果二概要設(shè)計1、順序??赡苄枰玫接行虮淼某橄髷?shù)據(jù)類型定義:ADT List數(shù)據(jù)對象:D=ai|ai6 ElemL, i=1,2
2、,,n, n >0數(shù)據(jù)關(guān)系:R1=<ai-1,ai>|ai-1,ai6 D, i=2,n 基本操作:InitStack(SqStack &S)操作結(jié)果:構(gòu)造一個空棧Push(L,e)操作結(jié)果:插入元素e為新的棧頂元素Status Pop(SqStack &S)操作結(jié)果:刪除棧頂元素ADT List ;2、鏈??赡苄枰玫接行虮淼某橄髷?shù)據(jù)類型定義:ADT List數(shù)據(jù)對象:D=ai|ai 6 ElemL, i=1,2,,n, n >0數(shù)據(jù)關(guān)系:R1=<ai-1,ai>|ai-1,ai6 D, i=2,n 基本操作:LinkStack(SqSta
3、ck &S)操作結(jié)果:構(gòu)造一個空棧Status Push(L,e)操作結(jié)果:插入元素e為新的棧頂元素Status Pop(SqStack &S)操作結(jié)果:刪除棧頂元素ADT List ;3、順序棧程序包含的主要模塊:(1) 已給定的函數(shù)庫:(2)順序棧結(jié)構(gòu)體:(3)順序棧初始化及創(chuàng)建:(4) 元素插入(5) 元素刪除(6)主程序:4、鏈棧程序包含的主要模塊:(1) 已給定的函數(shù)庫:(2)鏈棧結(jié)構(gòu)體:(3)鏈棧初始化及創(chuàng)建:(4) 元素插入(5) 元素刪除(6) 主程序:三詳細(xì)設(shè)計線性棧:結(jié)構(gòu)體#define STACK_INIT_SIZE 100存儲空間初始分配量#define
4、 STACKINCREMENT 10/存儲空間分配增量typedef structint *base;在構(gòu)造棧之前和銷毀之后,base的值為NULLint *top;/ 棧頂指針int stacksize;/當(dāng)前已分配的存儲空間,以元素為單位SqStack#include"Base.h"主函數(shù)#include"construction.h"#include"stack_operation.c"int main()SqStack S;int choice,e;S=InitStack();S=Input_Sq(S);printf(&quo
5、t;請選擇執(zhí)行的操作,輸入1執(zhí)行入棧操作,輸入2執(zhí)行 出棧操作choice=");scanf("%d”,&choice);switch(choice)case 1:printf("請輸入插入元素的值e=");scanf("%d",&e);S=Push(S,e);printf("執(zhí)行入棧操作后的線性棧為");Print_Stack(S);break;case 2:S=Pop(S);printf("執(zhí)行出棧操作后的線性棧為");Print_Stack(S);break;default
6、 : printf("您輸入的值不合法");線性棧的創(chuàng)建SqStack InitStack()/線性棧的創(chuàng)建SqStack S;S.base=(int*)malloc(STACK_INIT_SIZE * sizeof(int);/ 分配存儲空間if(!S.base)exit(OVERFLOW);/存儲分配失敗S.top=S.base;S.stacksize=STACK_INIT_SIZE;return S;輸入函數(shù)SqStack Input_Sq(SqStack S)/輸入函數(shù)int n,i;printf(" 請輸入元素個數(shù)n=");scanf(&quo
7、t;%d",&n);printf(" 請輸入外元素",n);for(i=0;i<n;i+)scanf("%d",S.top);S.top+;return S;進(jìn)棧函數(shù)SqStack Push(SqStack S,int e)/進(jìn)棧函數(shù)if(S.top-S.base>=S.stacksize)/判斷棧是否為滿,追加存儲空間S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT) *sizeof(int);if(!S.base)exit(OVERFLOW);/存儲分配失敗S
8、.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;/ 插入元素return S;出棧函數(shù)SqStack Pop(SqStack S)/ 刪除函數(shù)int e;if(S.top=S.base)printf("線性棧為空");e=*-S.top;return S;輸出函數(shù)void Print_Stack(SqStack S)/ 打印函數(shù)int i;while(S.base!=S.top)for(i=0;i<S.top-S.base;i+)S.top-;printf("%5d”,*S.top)
9、;printf("n");庫函數(shù)* Base.h (程序名)*/#include<string.h>#include<ctype.h>#include<malloc.h> /* malloc() 等 */#include<limits.h> /* INT_MAX 等 */#include<stdio.h> /* EOF(=AZ 或 F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<m
10、ath.h> /* floor(),ceil(),abs() */#include<process.h> /* exit() */*函數(shù)結(jié)果狀態(tài)代碼*/# define TRUE 1# define FALSE 0# define OK 1# define ERROR 0# define INFEASIBLE -1/* #define OVERFLOW -2 因?yàn)樵?math.h 中已定義 OVERFLOW®為3,故去掉此行*/typedef int Status; /* Status 是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等*/typedef int Boo
11、lean; /* Boolean是布爾類型,其值是 TRUE或FALSEl鏈棧程序:結(jié)構(gòu)體typedef struct SNode/建立鏈表結(jié)構(gòu)體int data;struct SNode *next;SNode,*LinkStack;主函數(shù)#include"Base.h"#include"construction.h"#include"LinkStack_operation.c"int main()LinkStack S;int choice,e;S=Creatlist_Stack();printf("請選擇執(zhí)行的操作,輸
12、入1執(zhí)行入棧操作,輸入2執(zhí)行出棧操作choice=");scanf("%d”,&choice);switch(choice)case 1:printf("請輸入插入元素的值e=");scanf("%d",&e);S=Push(S,e);printf("執(zhí)行操作入棧后的線性棧為");Print_Stack(S);break;case 2:S=Pop(S);printf("執(zhí)行出棧操作后的線性棧為");Print_Stack(S);break;default : printf(&qu
13、ot;您輸入的值不合法n");創(chuàng)建鏈棧函數(shù)LinkStack Creatlist_Stack()創(chuàng)建一個鏈棧LinkStack S;LinkStack P;int i,n;S=(LinkStack)malloc(sizeof(SNode);S->next=NULL;/*先建立一個鏈棧*/printf("請輸入元素個數(shù)n=");scanf("%d",&n);printf("請輸入外數(shù)據(jù)n",n);i=0;scanf("%d”,&S->data);for(i=1;i<n;+i)P=(L
14、inkStack)malloc(sizeof(SNode); /* 生成新結(jié)點(diǎn) */P->next=S;S=P;scanf("%d”,&S->data); /*輸入元素值 */return S;入棧函數(shù)LinkStack Push(LinkStack S,int e)LinkStack P;if(S=NULL)return ERROR;P=(LinkStack)malloc(sizeof(SNode);P->data=e;P->next=S;S=P;return S;出棧函數(shù)LinkStack Pop(LinkStack S)LinkStack P,Q
15、;P=S;S=S->next;free(P);return S;輸出函數(shù)void Print_Stack(LinkStack S)while(S)printf("%5d”,S->data);S=S->next;printf("n");庫函數(shù)* Base.h (程序名)*/#include<string.h> #include<ctype.h>#include<malloc.h> /* malloc()等 */#include<limits.h> /* INT_MAX等 */#include<s
16、tdio.h> /* EOF(=AZ 或 F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */ #include<process.h> /* exit() */*函數(shù)結(jié)果狀態(tài)代碼*/#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1/* #define OVERFLOW
17、-2 因?yàn)樵?math.h 中已定義 OVERFLOW®為3,故去掉此行*/typedef int Status; /* Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等*/typedef int Boolean; /* Boolean 是布爾類型,其值是 TRUE或FALSEl四調(diào)試分析:輸出函數(shù)用了語句 S->next!=NULL改正:語句S! =NULL五用戶手冊:看提示內(nèi)容六測試結(jié)果線性棧:1)請輸入元素的個數(shù):4,請輸入4個數(shù)據(jù)1 2 3 4 ,請輸入執(zhí)行語 句,選擇輸入1執(zhí)行入棧操作,選擇輸入2執(zhí)行出棧操作choice=1 , 請輸入插入元素的值e=6,執(zhí)行入棧操作后的線性棧為6 4 3 2 12)請輸入元素的個數(shù):4,請輸入4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國拼配茶飲行業(yè)發(fā)展現(xiàn)狀及發(fā)展趨勢與投資風(fēng)險研究報告
- 2025-2030鴿子養(yǎng)殖產(chǎn)業(yè)市場深度分析及前景趨勢與投資研究報告
- 2025-2030食用棕櫚油行業(yè)市場深度調(diào)研及趨勢前景與投融資研究報告
- 2025-2030防曬霜行業(yè)市場發(fā)展分析及前景趨勢與投資研究報告
- 2025-2030鋼筋強(qiáng)化機(jī)械產(chǎn)業(yè)市場深度調(diào)研及發(fā)展趨勢與投資研究報告
- 2025-2030賀卡行業(yè)市場發(fā)展分析與發(fā)展前景及投資戰(zhàn)略研究報告
- 2025-2030自動化機(jī)器人行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025-2030物流信息化行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025-2030混凝土攪拌設(shè)備產(chǎn)業(yè)市場發(fā)展分析及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025-2030早教產(chǎn)業(yè)市場發(fā)展分析及前景趨勢與投資戰(zhàn)略研究報告
- 防化的相關(guān)知識
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試地理試題及答案(武漢四調(diào))
- 青少年科技創(chuàng)新知識講座
- 2025山東司法警官職業(yè)學(xué)院教師招聘考試試題及答案
- 風(fēng)電項目合作框架協(xié)議
- 植物地理學(xué)課件 苔原(最終版)學(xué)習(xí)資料
- 吉林煙草工業(yè)有限責(zé)任公司招聘真題2024
- 2025-2030中國舞蹈學(xué)校行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資機(jī)會研究報告
- 學(xué)前兒童情感教育的家庭實(shí)踐策略
- 解析:2024年廣東省深圳市龍崗區(qū)中考二模物理試題(解析版)
- 無人機(jī)事故應(yīng)急響應(yīng)應(yīng)急預(yù)案
評論
0/150
提交評論