华南农业大学数据结构上机答案实验(共59页)

上传人:博****1 文档编号:472394171 上传时间:2022-11-26 格式:DOCX 页数:59 大小:27.23KB
返回 下载 相关 举报
华南农业大学数据结构上机答案实验(共59页)_第1页
第1页 / 共59页
华南农业大学数据结构上机答案实验(共59页)_第2页
第2页 / 共59页
华南农业大学数据结构上机答案实验(共59页)_第3页
第3页 / 共59页
华南农业大学数据结构上机答案实验(共59页)_第4页
第4页 / 共59页
华南农业大学数据结构上机答案实验(共59页)_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《华南农业大学数据结构上机答案实验(共59页)》由会员分享,可在线阅读,更多相关《华南农业大学数据结构上机答案实验(共59页)(59页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上华南农业大学数据结构上机答案实验 8583 顺序栈的基本操作时间限制:1000MS 内存限制:1000K提交次数:530 通过次数:212 题型: 编程题 语言: 无限制Description创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法。请将下#include<malloc.h> #include<stdio.h> #define OK 1#define ERROR 0#define STACK_INIT_SIZE 100 / 存储空间初始分配量#define STACKINCREMENT 10 /

2、存储空间分配增量typedef int SElemType; / 定义栈元素类型typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等struct SqStackSElemType *base; / 在栈构造之前和销毁之后,base的值为NULLSElemType *top; / 栈顶指针int stacksize; / 当前已分配的存储空间,以元素为单位; / 顺序栈Status InitStack(SqStack &S) / 构造一个空栈S,该栈预定义大小为STACK_INIT_SIZE/ 请补全代码S.base=(SElemType

3、*)malloc(STACK_INIT_SIZE*sizeof(SElemType);if(!S.base) return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status Push(SqStack &S,SElemType e) / 在栈S中插入元素e为新的栈顶元素/ 请补全代码if(S.top-S.base>=S.stacksize)S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType);if(

4、!S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return OK;Status Pop(SqStack &S,SElemType &e) / 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR/ 请补全代码if(S.top=S.base) return ERROR;e=*-S.top;return OK;Status GetTop(SqStack S,SElemType &e) / 若栈不空,则用e返回S的栈顶元素,并返回O

5、K;否则返回ERROR/ 请补全代码if(S.top=S.base) return ERROR;e=*(S.top-1);return OK;int StackLength(SqStack S) / 返回栈S的元素个数/ 请补全代码return S.top-S.base;Status StackTraverse(SqStack S)/ 从栈顶到栈底依次输出栈中的每个元素SElemType *p = (SElemType *)malloc(sizeof(SElemType); p = S.top ; /请填空if(S.top=S.base)printf("The Stack is Em

6、pty!"); /请填空elseprintf("The Stack is: ");p-;while(p>=S.base) /请填空printf("%d ", *p);p- ; /请填空printf("n");return OK;int main()int a;SqStack S;SElemType x, e;if(InitStack(S) / 判断顺序表是否创建成功,请填空printf("A Stack Has Created.n");while(1)printf("1:Push n2:P

7、op n3:Get the Top n4:Return the Length of the Stackn5:Load the Stackn0:ExitnPlease choose:n");scanf("%d",&a);switch(a)case 1: scanf("%d", &x);if(!Push(S,x) printf("Push Error!n"); / 判断Push是否合法,请填空else printf("The El ement %d is Successfully Pushed!n&qu

8、ot;, x); break;case 2: if(!Pop(S,e) printf("Pop Error!n"); / 判断Pop是否合法,请填空else printf("The Element %d is Successfully Poped!n", e);break;case 3: if(!GetTop(S,e)printf("Get Top Error!n"); / 判断Get Top是否合法,请填空else printf("The Top Element is %d!n", e);break;case 4

9、: printf("The Length of the Stack is %d!n",StackLength(S); /请填空break;case 5: StackTraverse(S); /请填空break;case 0: return 1;8584 循环队列的基本操作时间限制:1000MS 内存限制:1000K提交次数:366 通过次数:157 题型: 编程题 语言: 无限制Description创建一个空的循环队列,并实现入队、出队、返回队列的长度、返回队头元素、队列的遍历等基本算法。请将下面的程序补充完整。#include<malloc.h> #incl

10、ude<stdio.h> #define OK 1#define ERROR 0typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等typedef int QElemType;#define MAXQSIZE 100 / 最大队列长度(对于循环队列,最大队列长度要减1)typedef structQElemType *base; / 初始化的动态分配存储空间int front; / 头指针,若队列不空,指向队列头元素int rear; / 尾指针,若队列不空,指向队列尾元素的下一个位置SqQueue;Status InitQueue

11、(SqQueue &Q) / 构造一个空队列Q,该队列预定义大小为MAXQSIZE/ 请补全代码Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType);if(!Q.base) return ERROR;Q.front=Q.rear=0;return OK;Status EnQueue(SqQueue &Q,QElemType e) / 插入元素e为Q的新的队尾元素/ 请补全代码if(Q.rear+1)%MAXQSIZE=Q.front)return ERROR;Q.baseQ.rear=e;Q.rear=(Q.rear+1)%M

12、AXQSIZE;return OK;Status DeQueue(SqQueue &Q, QElemType &e) / 若队列不空, 则删除Q的队头元素, 用e返回其值, 并返回OK; 否则返回ERROR/ 请补全代码if(Q.front=Q.rear)return ERROR;e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;return OK;Status GetHead(SqQueue Q, QElemType &e)/ 若队列不空,则用e返回队头元素,并返回OK,否则返回ERROR/ 请补全代码if(Q.front=Q.

13、rear) return ERROR;e=Q.baseQ.front;return OK;int QueueLength(SqQueue Q) / 返回Q的元素个数/ 请补全代码return (Q.rear+MAXQSIZE-Q.front)%MAXQSIZE;Status QueueTraverse(SqQueue Q) / 若队列不空,则从队头到队尾依次输出各个队列元素,并返回OK;否则返回ERROR.int i;i=Q.front;if(Q.front=Q.rear)printf("The Queue is Empty!"); /请填空elseprintf("The Queue is: ");while(i<Q.rear) /请填空printf("%d ",Q.basei); /请填空i = i+1; /请填空printf("n");return OK;int main()int a;SqQueu e S;QElemType x, e;if(InitQueue(S) / 判断顺序表是否创建成功,请填空printf("A Queue H

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

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号