`
hnjzsyjyj
  • 浏览: 27482 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

顺序栈的实现 C++

 
阅读更多
【程序代码】
/***顺序栈的实现***/

#include<iostream>
using namespace std;
const int StackSize=100;

struct SqStack {//顺序栈结构
	char data[StackSize];//栈可用的最大容量
	int top;//栈顶指针
};

void InitStack(SqStack &S) {//顺序栈的初始化
	S.top=-1;
}

void Push(SqStack &S, char e) {//顺序栈的入栈
	if (S.top==StackSize-1) {//栈满
		cerr<<"Stack overflow!"<<endl;
		exit(1);
	}
	S.top++;
	S.data[S.top]=e;
}

char Pop(SqStack &S) {//顺序栈的出栈
	if (S.top==-1) {//栈空
		cerr<<"Stack is empty!"<<endl;
		exit(1);
	}
	return S.data[S.top--];
}

char GetTop(SqStack S) {//取顺序栈的栈顶元素
	if(S.top==-1) {
		cerr<<"Stack is empty!"<<endl;
		exit(1);
	}
	return S.data[S.top];//返回栈顶元素的值
}

int isFull(SqStack S) {//判断栈是否已满,若是则返回1,否则返回0,此函数为顺序栈所特有
	return S.top==StackSize-1;
}

int isEmpty(SqStack S) {//判断栈是否为空,若是则返回1,否则返回0
	return S.top==-1;
}

void ClearStack(SqStack &S) {//清空栈。在顺序存储方式下,同初始化栈的算法相同
	S.top=-1;
}

int main() {
	SqStack S;
	InitStack(S);

	cout<<"请输入顺序栈的元素个数:"<<endl;
	int n;//n<=StackSize
	cin>>n;

	cout<<"请输入顺序栈的元素值:"<<endl;
	for(int i=0; i<n; i++) {
		cin>>S.data[i];
		Push(S,S.data[i]);
	}

	cout<<"从栈顶依次输出的顺序栈的元素值:"<<endl;
	for(int i=0; i<n; i++) {
		cout<<Pop(S)<<" ";
	}

	return 0;
}


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics