- 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
文档评论(0)