数据结构 实验4 顺序栈的基本操作及应用

实验4、顺序栈的基本操作及应用

(1)实验目的

通过该实验,让学生掌握栈的相关基本概念,认识栈是插入和删除集中在一端进行的线性结构,掌握栈的“先入后出”操作特点。栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。

(2)实验内容

用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。

(3)参考界面

菜单中包括以下功能:
1.初始化栈,2.销毁栈,3.清空栈,4.栈判空,5.求栈长度,6.获取栈顶元素,7.插入一个 元素,8.删除一个元素,9输出所有元素,10进制转换。
要求:自定义的函数中不允许出现提示语和输出语句。

(4)验收/测试用例

通过菜单调用各个操作,测试点:
 没有初始化前进行其他操作,程序是否能控制住;
 初始化一个栈;
 判栈空,屏幕显示栈为空;
 3个数入栈, 2、4、6;
 栈长度,屏幕输出3;
 取栈顶元素,再判栈空,然后再判栈长度。让学生知道取栈顶元素不改变栈中的内容,栈顶指针不发生改变;
 出栈,再判栈长度和输出栈中内容;(多次出栈,直到栈为空;再出栈,是否提示栈为空)
 销毁栈,再做其他操作,判断程序是否能控制;
 数制转换,(允许用户输入想把十进制转换成几进制),然后灵活的转换成对应的进制。

运行环境

Dev C++

主要源代码

#include<iostream>
#include<malloc.h>
#include<stdlib.h>
using namespace std;
#define STACK_INIT_SIZE 100;
#define STACKINREMENT 10;


#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0


typedef struct {
   
	int *top=NULL;
	int *base=NULL;
	int stacksize;
}Sqstack;

//初始化栈 
int InitStack(Sqstack &S){
   
	if (S.base){
   //栈已经存在 
		return OK; 
	}else{
   
	S.base = (int*)malloc(100*sizeof(int));
	if(!S.base) return ERROR;
	S.top=S.base;
	S.stacksize=STACK_INIT_SIZE;
	*(S.base)=0; 
	return 1; 
	}
} 

//销毁栈 
void DestroyStack(Sqstack* S){
   
	int *p=S->base;
	S->base=NULL;
	S->top=NULL;
	S->stacksize = 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值