数据结构顺序栈-创新互联

栈的定义

栈是限定仅在表尾进行插入和删除操作的线性表,栈被称为后进先出的线性表,分别称为顺序栈和链栈。
stacksize为栈的大容量,base为栈底指针,top为栈顶指针,top==base表示栈为空,top指的位置为栈顶元素的下一个位置上。

创新互联始终致力于在企业网站建设领域发展。秉承“创新、求实、诚信、拼搏”的企业精神,致力为企业提供全面的网络宣传与技术应用整体策划方案,为企业提供包括“网站建设、响应式网站、手机网站建设、微信网站建设、成都小程序开发商城网站建设、平台网站建设秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。代码及注释
#include#define MAXSIZE 100
using namespace std;
typedef int SElemType;
typedef struct
{
 SElemType* base;//栈底指针
 SElemType* top;//栈顶指针                    
 int stacksize;//栈可以用的大容量
}SqStack;
//顺序栈的初始化
void InitStack(SqStack& S)
{
 S.base = new SElemType[MAXSIZE];
 if (!S.base)
 {
 	exit(1);
 }
 S.top = S.base;
 S.stacksize = MAXSIZE;
}
//顺序栈的长度
int StackLength_Sq(SqStack& S)
{
 return (S.top - S.base);
}
//顺序栈的入栈
bool Push(SqStack& S, SElemType e)
{
 if (S.top - S.base == S.stacksize)
 {
 	return false;
 }
 else
 {
 	*S.top++ = e;
 	return true;
 }
}
//顺序栈的出栈
bool Pop(SqStack& S, SElemType& e)
{
 if (S.top == S.base)
 {
 	return false;
 }
 else
 {
 	e = *--S.top;
 	return true;
 }
}
//获取栈顶元素
SElemType GetTop(SqStack S)
{
 if (S.top != S.base)
 {
 	return *(S.top - 1);
 }
}
void Print_S(SqStack& S)
{
 int length = StackLength_Sq(S);
 for (int i = 1; i<= length; i++)
 {
 	cout<< *(S.top - i)<< " ";
 }
 cout<< endl;
}
int main()
{
 SqStack S;
 InitStack(S);
 for (int i = 0; i< 10; i++)
 {
 	Push(S, i * 10);
 }
 SElemType e, f;
 cout<< "栈的长度为:"<< StackLength_Sq(S)<< endl;
 Print_S(S);
 cout<< "移除栈顶元素"<< endl;
 Pop(S, f);
 cout<< "栈的长度为:"<< StackLength_Sq(S)<< endl;
 Print_S(S);
 cout<< "加入栈顶元素"<< endl;
 Push(S, 90);
 Print_S(S);
 e = GetTop(S);
 cout<< "栈顶元素为:"<< e<< endl;
 system("pause");
 return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网页名称:数据结构顺序栈-创新互联
文章源于:https://www.cdcxhl.com/article18/eppdp.html

成都网站建设公司_创新互联,为您提供商城网站企业网站制作企业建站网站设计公司网站改版网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站建设