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

栈的定义

栈是限定仅在表尾进行插入和删除操作的线性表,栈被称为后进先出的线性表,分别称为顺序栈和链栈。
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元起,快前往官网查看详情吧


分享标题:数据结构顺序栈-创新互联
转载注明:http://scyanting.com/article/eppdp.html