C++ 顺序栈的基本操作及数制转换

实验4、顺序栈的基本操作及应用
要求:
(1)实验目的
通过该实验,让学生掌握栈的相关基本概念,认识栈是插入和删除集中在一端进行的线性结构,掌握栈的“先入后出”操作特点。栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。
(2)实验内容
用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。
(3)参考界面
菜单中包括以下功能:
1.初始化栈,2.销毁栈,3.清空栈,4.栈判空,5.求栈长度,6.获取栈顶元素,7.插入一个 元素,8.删除一个元素,9输出所有元素,10进制转换。
要求:自定义的函数中不允许出现提示语和输出语句。
(4)验收/测试用例
通过菜单调用各个操作,测试点:
 没有初始化前进行其他操作,程序是否能控制住;
 初始化一个栈;
 判栈空,屏幕显示栈为空;
 3个数入栈, 2、4、6;
 栈长度,屏幕输出3;
 取栈顶元素,再判栈空,然后再判栈长度。让学生知道取栈顶元素不改变栈中的内容,栈顶指针不发生改变;
 出栈,再判栈长度和输出栈中内容;(多次出栈,直到栈为空;再出栈,是否提示栈为空)
 销毁栈,再做其他操作,判断程序是否能控制;
 数制转换,(允许用户输入想把十进制转换成几进制),然后灵活的转换成对应的进制。


#include<iostream>
#include<stdlib.h>
using namespace std;
#define STACK_INIT_SIZE 100 //空间初始分配量
#define STACKINCREMENT  10  //分配增量
#define OVERFLOW -1
int exist=0;        //判定初始化
typedef int SElemType;
typedef struct{
   
	SElemType *base;
	SElemType *top;   //栈顶指针
	int stacksize; 
}SqStack;

//构造一个空栈 
void InitStack(SqStack &S){
   
	S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
	if(!S.base) exit(OVERFLOW);
	S.top=S.base;
	S.stacksize=STACK_INIT_SIZE;
	return;
}

//销毁栈 
void DestroyStack(SqStack &S){
   
	free(S.base);
	S.base=NULL;
	if(!S.base) cout<<"销毁成功!"<<endl;
	else{
   
		cout<<"销毁失败!"<<endl;
		exit(0);
	}
}

//清空栈
void ClearStack(SqStack &S){
      
	S.top=S.base; 
	return;
}

//栈判空
void StackEmpty(SqStack &S){
               
	if(S.top=S.base) cout<<"S为空栈!"<<endl;
	e
  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值