- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验二栈与队列的应用
广东工业大学实验报告
信息工程 学院 电子信息工程 专业 班 成绩评定
学号 姓名 (合作者____号____) 教师签名_______
实验 二 题目栈与队列的应用
实验目的
熟练掌握栈结构及其应用。
实验内容
利用栈结构具有先进后出的特性,编程实现:输入一个任意十进制数,转换为八进制数进行输出。
实验步骤
1、定义栈结构
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
2.设计基本算法
1)对栈进行初始化:
Status InitStack (SqStack S) {
//构造一个空栈
S.base = (Selemtype *)malloc(stack_size * sizeof(ElemType));
if (!S.base) exit (OVERFLOW);
S.top = S.base;
S.stacksize = stack_size;
return OK;
}//InitStack
2) 返回栈顶函数:
Status GetTop(SqStack S,Selemtype e){
//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
if (S.top ==S.base) return ERROR;
e = *(S.top-1);
return OK;
}// GetTop
3)入栈函数
Status Push (SqStack S,Selemtype e) {
//插入元素e为新的栈顶元素
if (S.top - S.base=S.stacksize){//栈满,追加存储空间
S.base = (ElemType*)realloc (S.base,
(S.stacksize + stackincrement) * sizeof (ElemType));
if (!S.base) exit (OVERFLOW);//存储分配失败
S.top = S.base+S.stacksize;
S.stacksize +=stackincrement;
}
*S.top++=e;
return OK;
}//Push
4)栈空处理函数
Status StackEmpty(SqStack S){
if (S.base == S.top) return OK;
else return ERROR;
} // StackEmpty
5)出栈函数
Status Pop(SqStack S,Selemtype e){
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK
//,否则返回ERROR
if (S.top==S.base) return ERROR;
e=*--S.top;
return OK;
}//Pop
3.编写main()函数调用以上各函数,并进行调试,以验证在栈与队列的应用中,数制转换的实现.
四、 实验程序
#includestdio.h
#includestdlib.h
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INT_SIZE 100 // 线性表存储空间的初始分配量
#define STACKINCREMENT 10 //线性表存储空间的分配增量
typedef int ElemType;
typedef int Status;
typedef int Selemtype;
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
Status InitStack (SqStack S) {
//构造一个空栈
S.base = (int *)malloc(STACK_INT_SIZE* sizeof(ElemType));
if (!S.base) exit (OVERFLOW);
S.top = S.base;
S.stacksize =STACK_INT_SIZE;
return OK;
}//InitStack
Status GetTop(SqStack S,Selemtype e){
//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
if (S.top ==S.base) return ERROR;
e = *(S.top-1);
return OK;
}// GetTop
Status Push (SqStack S
您可能关注的文档
- 撕纸画教案.doc
- 播音主持模拟题.doc
- 摩托车发动机电喷硕士论文.docx
- 撕纸画技法教程low.doc
- 操作系统内存buddy算法和页置换算法实验报告.doc
- 操作系统实验-CPU进程调度和内存分配_java版.doc
- 操作系统样卷.doc
- 操作系统课程设计---动态分区分配存储管理.doc
- 操作系统课程设计--文件访问接口设计.doc
- 支撑光网络发展的光子集成器件研发与趋势.doc
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)