2023年数据结构实验报告11.docx

上传人:太** 文档编号:72869398 上传时间:2023-02-13 格式:DOCX 页数:9 大小:73.04KB
返回 下载 相关 举报
2023年数据结构实验报告11.docx_第1页
第1页 / 共9页
2023年数据结构实验报告11.docx_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2023年数据结构实验报告11.docx》由会员分享,可在线阅读,更多相关《2023年数据结构实验报告11.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据结构实验报告一一实验5学号:姓名:得分:一、实验目的1、复习栈的逻辑结构、存储结构及基本操作;2、掌握顺序枝、链枝。二、实验内容I、(必做题)假设栈中数据元素类型是字符型,请采用顺序栈实现栈的以下基本操作:(1 )S tat us I ni t S t a ck (& S )/构造空栈 S;St a tus Pus h (&S, e ) 元素 e 入栈 S ;(3)S t a t u s Pop(&S, &e) 栈 S 出栈,元素为 e。2、(必做题)请实现:对于一个也许涉及括号什、口、()的表达式,鉴定其中括号是否匹配。三、算法描述(采用臼然语言描述)1 .构建空枝s,输入元素,将元素依

2、次入栈,遍历打印枝中元素,输出枝顶元素,打印被输出的元素,遍历 打印栈中元素。2 .构建空栈,输入表达式,使用函数c ount判断表达式中括号是否匹配,假如匹配输出匹配对的,不匹配 则输出匹配错误。四、具体设计七、用户手册(告诉用户如何使用程序,使用注意事项等).第二个程序输入时需注意表达式不得长于1 0个单位;1 .第一个程序输入时需注意表达式不得长于1 0()个单位;开始7五、程序代码结束(给出必要注释)# inc 1 u d einclude# d e fi n e M a xSize 1 00t y p edef st r u c t node * S q S t a c k:type

3、def c h ar E 1 emTy p e;s t ruct n od e / /栈的数据结构(int top;El e mTyp e datafMa x Sizel;;voi d Statusin i tS t ack(SqS t ack *L) 构造空栈 S(*L) = (SqSt ack*) malloc( s i z eof(SqS t a c k);(* L)to p = -1;)voi d S tatu s P u s h ( S q S ta c k L, ElemType e)元素 e 入栈 S |if ( L- t op = Ma x Size - 1)(pr i nt

4、f (栈满n );e IseL-to p +;L-da t a L - t op = e;void St a t u sPop ( S q S tac k L, ElemType *e)栈 S 出栈,元素为 e i f ( L - t o p = - 1 )(printf (栈空 n”);)e 1 se (* e = L-d a ta L-lop;L-top- -;)void Pri n t( S qSt a ck L) 遍历输出|int i = 0;f o r( i = 0; i top; i+)(print f (%c ”,L- d ata i);prin t f (n );i nt m

5、a in()SqStac k s;ElcmTypc e;E lemT y pe* y;y = &e;Statu slni t S tac k (&s);print f(输入入栈数据:);sea n f (%c, &e);wh i 1 e (e!-n)(S t at u sPush(s, e); scanf(% c 11, &c);)p rintf(n目前栈中元素为: n );Pr i nl(s);Sta t u s Po p (s, y);p r i n t f (n 出栈元素是: c n, *y) prin t f (n栈顶元素出栈后,栈为:n : Print(s);)1. #includc

6、 #incl u de# i nclu d e define STACK_I NIT_SIZE10# define S T AC K_GR 0 W_ S IZ E 5def i ne ELEMTYPE chart y p e def s t r u ct / *建立一个栈的首结点ELEMT Y PE * ba s e;ELEMTYPE * top;i n t st a ck s i ze; SpStack;int I n i t Stack (SpS t ack * s )/*建立空的栈并返回首地址*/s-base=( (E L EMTYP E *)m a lloc(STACK_INIT_SI

7、 Z E* s i ze o f(E L EMTYPE);i f (!sbasc) ret u r n 0;s-(o p =s- b ase;s-stac k s i ze二STACKNIT_SIZE;ret u rn I;)int Stack E mp t y(S p Stack *s) /* 判断栈是否为空 大/i f (s-lo p = s -b a s e) return 1;e Iseret u rn 0;int P u sh(SpStack *s,ELEMT Y P E e)/*往栈顶插入元素即进栈* /if (s- t ops-base=s-st a c ksi z e)/*判断

8、是否栈满*/s- b a s e =( ( ELEM T YP E * )realloc ( s- b a s e ,(s-stack s iz e +S T AC K GROW_SIZE)*sizeo f (ELEMTYPE);if (!s-b a se) return 0;s-s t acksize+=STACK GROW SIZE;s-to p = s -ba s e+s-st a cksize;I*s-top+= e ;r eturn 1 ;Iint Pop(SpStac k *s, ELEMTYPE*e)/*让栈顶元素依次输出即出栈*/if (StackEmp t y ( s ) r

9、 e turn 0:*e=*(stop);return 1;)int Cou n t( S pS ta c k *s)ELEM TYPE eSTA C K _INI T _S I ZE* 2 ;ELEMTYPE el;int i;1 nitSt a ck(s);ge t s( e );if ( n *= e strlen(e)- 1 ) e str 1 e n ( e )-1 =0;for (i= 0 ;ei! =0;i+)(switch (e( i )(case(:ca s e c ase * *:Pus h (s,e i);b r ea k ;casecase T:case ,:if(St

10、ackEmpty(s)(P6一咂配错误、-);retur n 0 ;e Ise Po p ( s , &el);break;1)if (StackEmpty(s)printf(匹配对的n);ret u m 1;else(printf(匹配错误n );retur n 0;)in t main()SpS t ack s;printf (”请输入一个也许涉及括号卜、()的表达式n);C oun t (&s);f r ee(s. base);return 0;)六、测试和结果(给出测试用例,并给出测试结果)输入入栈数据:dhdjff目前栈中元素为: dhdjff出栈元素是:f栈顶元素出栈后,栈为: dhdjf1请输入一个可能包括括号。、口、()的表达式 ()也配正确

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁