ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:19.66KB ,
资源ID:19923879      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19923879.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大数据结构实验报告材料栈和队列文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

大数据结构实验报告材料栈和队列文档格式.docx

1、 /*定义元素的类型*/*(1)-补充栈的顺序存储分配表示,采用定长和可变长度存储均可*/typedef struct ElemType *base; ElemType *top; int stacksize;SqStack;int InitStack(SqStack *S); /*构造空栈*/int Push(SqStack *S,ElemType e); /*入栈*/int Pop(SqStack *S,ElemType *e); /*出栈*/int PopSq(SqStack *S);int GetTop(SqStack *S,ElemType *e); /*获取栈顶元素*/int Cl

2、earStack(SqStack *S); /*清空栈*/int StackEmpty(SqStack *S); /*判断栈是否为空*/int StackLength(SqStack *S); /*求栈的长度*/void conversion(); /*十进制转换为二进制*/void Correct(); /*判断表达式括号是否匹配*/*(2)-初始化栈函数*/int InitStack(SqStack *S) S-base=(ElemType *)malloc(STACK_INT_SIZE*sizeof(ElemType); if(!S-base) return ERROR; top=S-b

3、ase;stacksize=STACK_INT_SIZE; return OK;/*InitStack*/*(3)-入栈函数*/int Push(SqStack *S,ElemType e) if(S-top-S-base=S-stacksize)base=(ElemType *)realloc(S-base,(S-stacksize+STACKINCREMENT)*sizeof(ElemType);base+S-stacksize;stacksize+=STACKINCREMENT; *S-top+=e;/*Push*/*(4)-出栈函数*/int Pop(SqStack *S,ElemTy

4、pe *e)top=S- -S-top; *e=*S-/*Pop*/int PopSq(SqStack *S)/*(5)-返回栈顶元素函数*/int GetTop(SqStack *S,ElemType *e) *e=*(S-top-1);/*GetTop*/*(6)-清空栈函数*/int ClearStack(SqStack *S) if(InitStack(S) printf(Init Success!); elseInit Fail!/*ClearStack*/*(8)-判断栈是否为空*/int StackEmpty(SqStack *S)base=S-top)/*StackEmpty*

5、/*(9)-返回栈的长度函数*/int StackLength(SqStack *S) return S-/*StackLength*/*(10)-十进制整数转换为二进制并输出函数*/void Conversion() int e; SqStack sq; InitStack(&sq); int count;input count: scanf(%d,&count); while(count!=0) Push(&sq,count%2); count=count/2; while(Pop(&sq,&e)%d ,e);/*Conversion*/*(11)-判断表达式括弧是否匹配(假设只有一种小括

6、弧)函数*/void Correct() SqStack sqs;sqs); char a100,c; int i=0;input : while(c=getchar()!=n) ai+=c; for(i=0;istrlen(a);i+) if(ai=(sqs,ai);) PopSq(& if(StackEmpty(&sqs)OK!error!/*Correct*/*定义菜单字符串数组*/int menu_select() char *menu= n*MENU*n, 1. Init Satckn, /*初始化顺序栈*/ 2. Push Elementn, /*入栈*/ 3. Get TopEl

7、ementn, /*获得栈顶元素*/ 4. Return StackLengthn, /*返回栈的长度*/ 5. Stack IsEmptyn, /*判断是否栈空*/ 6. Pop Elementn, /*出栈*/ 7. Clear Stackn, /*清空栈*/ 8. Conversionn, /*利用栈进行数制转换*/ 9. Correctn, /*利用栈进行括号匹配*/ 0. Quitn, /*退出*/ ; char s3; /*以字符形式保存选择号*/ int c,i; /*定义整形变量*/ for (i=0; i11; i+) /*输出主菜单数组*/%s,menui); donEnt

8、er you choice(09): /*在菜单窗口外显示提示信息*/,s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整形数*/ while (c9); /*选择项不在09之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/int main() SqStack ss;ss); for (; switch (menu_select() case 1:n1-Init Satck:n if(InitStack(&ss)Init OK!Init ERROR! break; case 2:n2-Push Element:input data(Te

9、rminated by inputing a character): while(scanf(e)=1) if(Push(&ss,e)Push %d OK!Push %d ERROR!input data:(Terminated by inputing a character) getchar(); case 3:n3-Get TopElement: if(GetTop(&ss,&Top is %dStack is Empty! case 4:n4-Return StackLength:StackLength is %d,StackLength(&ss); case 5:n5-Stack Is

10、Empty:Stack is not Empty! case 6:n6-Pop Element:All elements of Stack : case 7:n7-ClearStack: ClearStack(&ClearStack OK! case 8:n8-Conversion: Conversion(); case 9:n9-Correct: Correct(); case 0: exit(0); return 0;2、按照要求完成程序exp3_2.c,实现循环队列的相关操作。 初始化队列; 返回当前队列长度; 连续入队2,4,6,8,10; 获取当前队头元素; 判断当前队列是否为空;

11、队列元素依次出队;exp3_2.c部分代码如下:#define MAXQSIZE 100typedef int QElemType;/*(1)-循环队列顺序存储表示*/ QElemType *base; int front; int rear;SqQueue;/*(2)-构造一个空循环队列*/int InitQueue(SqQueue *Q) Q-base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType);Q-front=Q-rear=0;/*InitQueue*/*(3)-返回循环队列的长度*/int QueueLength(SqQueue *Q)

12、 return Q-rear - Q-front;/*QueueLentgh*/*(4)-入队操作*/int EnQueue(SqQueue *Q,QElemType e) if(Q-rear+1)%MAXQSIZE=Q-front)baseQ-rear=e;rear=(Q-rear+1)%MAXQSIZE;/*EnQuese*/*(5)-出队操作*/int DeQueue(SqQueue *Q,QElemType *e) if(Q-front=Q-rear) *e=Q-front;front=(Q-front+1)%MAXQSIZE;/*DeQueue*/*(6)-判断队列是否为空*/int

13、 QueueEmpty(SqQueue *Q)rear=Q-/*QueueEmpty*/*(7)-取队头元素*/int GetHead(SqQueue *Q,QElemType *e)rear = Q-front) /队列空的判断 *e = Q- /将队头元素赋值给efront = (Q-front + 1) % MAXQSIZE;/front指针向后一位置,若到最后,则转到数组头部/*GetHead*/*销毁队列*/int DestroyQueue(SqQueue *Q)rear=Q-front=0; free(Q-base);/*DestroyQueue*/ 1. Init Queuen,

14、 /*初始化循环队列*/ 2. Get QueueLengthn, /*求队列的长度*/ 3. EnQueuen, /*入队操作*/ 4. Get Headn, /*取队头元素*/ 5. Queue IsEmptyn, /*判断是否队空*/ 6. DeQueuen, /*出队操作*/, /*销毁队列并退出*/=8; i+)nEnter you choice(06):6);/*主函数*/ SqQueue qq; InitQueue(&qq);n1-Init Queue: if(InitQueue(&qq)n2-Get QueueLength:Queue length is %d,QueueLen

15、gth(&qq);n3-EnQueue:please input data:e); if(EnQueue(&qq,e)%d EnQueue OK!EnQueue Error!n4-Get Head: if(GetHead(&qq,&Head is %dnGet Head Error!n5-QueueEmpty: if(QueueEmpty(&Queue is Empty!Queue is not Emptyn6-DeQueue:Queue is : while(!QueueEmpty(& if(DeQueue(& DestroyQueue(&3、递归(汉诺塔问题)利用递归算法程序设计编写程序e

16、xp3_3.c,解决n阶汉诺塔问题(A柱为起始,C柱为目的)。请将程序补充完整,并分别调试盘子数为3,7的情况。exp3_3.c部分代码如下:int step=1;void hanoi(char A,int n,char B,char C) if (n=1)第%d步:,step+);将%c柱子上唯一的1个盘子移到%c柱子!,A,C);先将%c柱子上的多余的 %d个盘子移到%c柱子中过程:,A,n-1,B) ; hanoi(A,_n-1_ ,C,_B_);将 %c 柱子上的最大的盘子移到 %c柱子中!接下来将%c柱子上的%d个盘子移到 %c 柱子中过程:, B,n-1,C) ; hanoi(B,_n-1_ ,A,_C_); int n; char A,B,C; A=A B=B C=C输入A柱子上盘子的个数:n); hanoi(A,n,B,C);n移动结束4、拓展实验:设计程序实现简单四则算术运算。要求说明:(1)从键盘接收算术表达式,以“#”表示接收结束;(2)输出算术表达式的值;(3)操作数仅限于非负整数,操作符只能是+、-、*、/、(、)(4)可以判断表达式的合法性(如括号的匹配)提示:借助栈来完成,将一个表达式转换为后缀表达式,并按照后缀表达式进行计算,得出表达式得结果。【实验小结】

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1