C++实现栈的初始化、进栈、出栈、清空、销毁、进制转换等操作

本文介绍了如何使用C++实现栈的各种基本操作,包括初始化、判断栈是否为空、求栈的长度、清空栈、销毁栈、元素的入栈、出栈、取栈顶元素以及栈中元素的输出。同时,还涵盖了进制转换的功能。提供完整代码供参考和讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 栈的定义和特点

 预定义

初始化 

判断栈是否为空 

求顺序栈的长度 

 清空顺序栈

 销毁顺序栈

 入栈

出栈 

 取栈顶元素

 输出栈中的元素

 进制转换和输出

 完整代码

运行结果:


栈的定义和特点

定义:(Stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。

又称后进先出(Last In First Out)的线性表,简称LIFO结构。

逻辑结构:与线性表相同,仍为一对一关系。

存储结构:用顺序栈和链栈存储均可,但以顺序栈更常见。

运算规则:只能在栈顶运算,且访问节点时仍依照后进先出的原则。

 预定义

#include<iostream>
#include<cstdio> 
#include<cstdlib>
#define MaxSize 100
#define Ok 1
#define Error 0
#define OverFlow -2
using namespace std;

typedef int Status;
typedef int SElemType;
typedef struct{
	SElemType *top;		//栈顶指针 
	SElemType *base;	//栈底指针 
	int stacksize;		//栈可用最大容量 
}SqStack;
SqStack S,T;

初始化 

//初始化 
Status InitStack(SqStack &S){
	S.base = (SElemType*)malloc(sizeof(SElemType) * MaxSize);
	if(!S.base)
		exit(OverFlow);			//存储分配失败 
	S.top = S.base;			//栈顶指针等于栈底指针
	S.stacksize = MaxSize;
	return Ok; 
} 

判断栈是否为空 

//判断栈是否为空
Status StackEmpty(SqStack S){
	if(S.top == S.base)
		return Ok;
	else
		return Error;
}

求顺序栈的长度 

//求顺序栈的长度
int StackLength(SqStack S){
	return S.top - S.base;
} 

 清空顺序栈

//清空顺序栈
Status ClearStack(SqStack &S){
	if(S.base)
		S.top = S.base;
	return Ok;
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值