C++实现顺序栈

C++实现顺序栈

1.初始化顺序栈
2.压栈
3.弹栈
4.取得栈顶元素
5.从栈底打印
6.从栈顶打印

整体代码:

#include<iostream>

using namespace std;


struct SqStack{
	int data[10];//存放栈的静态数组 
	int top;//栈顶指针 
};

bool initStack(SqStack &stack){//初始化顺序栈
	stack.top=-1;//初始化栈顶指针为-1 
	for(int i=0;i<10;++i){//初始化栈内默认值为-100 
		stack.data[i]=-100;
	}
	return true; 
}

bool pushStack(SqStack &stack,int x){//压栈
	if(stack.top==9){//栈满 
		return false;
	}
	stack.top++;//先加栈顶指针后压栈 
	stack.data[stack.top]=x;
	return true;
}

int popStack(SqStack &stack){//弹栈
	if(stack.top==-1){
		return -1;
	}
	int x=stack.data[stack.top];//辅助变量返回弹出的元素值 
	stack.data[stack.top]=-100;//栈内元素赋为默认值 
	stack.top--;//先弹栈后减小栈顶指针 
	return x; 
} 

int getTop(SqStack stack){//取得栈顶元素
	 if(stack.top==-1){
		return -100;
	}
	return stack.data[stack.top]; 
}

bool printStack1(SqStack stack){//从栈底打印
	for(int i=0;i<=stack.top;++i){//栈顶指针适用于循环遍历的长度计算 
		cout<<stack.data[i]<<" ";
	} 
	cout<<endl;
	return true;
}


bool printStack2(SqStack &stack){//从栈顶打印
	for(int i=stack.top;i>=0;--i){//使用栈顶指针的值进行遍历 
		cout<<stack.data[i]<<" ";
	} 
	cout<<endl;
	return true;
}

int main(){
	
	SqStack stack;
	initStack(stack);
	pushStack(stack,1);
	pushStack(stack,2);
	pushStack(stack,3);
	pushStack(stack,4);
	pushStack(stack,5);
	pushStack(stack,6);
	printStack1(stack);
//	printStack2(stack);
	popStack(stack);
	printStack1(stack);
	cout<<getTop(stack)<<endl;
	return 0;
}
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页