栈--顺序栈的基本操作(对小白友好)

文章目录

  • 栈的基本操作
  • 栈的定义
  • 栈的初始化
  • 栈的判空
  • 进栈
  • 出栈
  • 读取栈顶元素
  • 销毁栈
  • 全部源码

栈的基本操作

  以下代码中,默认初始化的top为-1。

栈的定义

#define MaxSize 50 //定义栈中元素最大个数

typedef struct {
	int data[MaxSize]; //存放栈中元素
	int top;         //栈顶指针
}SqStack;

栈的初始化

  将top指指针指向-1.

void InitStack(SqStack &s)
{
	s.top = -1;
}

栈--顺序栈的基本操作(对小白友好)_第1张图片

栈的判空

bool StackEmpty(SqStack s)
{
	if (s.top == -1)
		return true;
	cout << "栈不为空";
	return false;
}

进栈

  理解这里的指针先加1,在入栈。

bool Push(SqStack& s,int e)
{
	if (s.top == MaxSize - 1)
		return false;   //栈满
	s.data[++s.top] = e; //指针先加1,在入栈
	return true;
}

栈--顺序栈的基本操作(对小白友好)_第2张图片

出栈

  先出栈,指针在减1。

bool Pop(SqStack& s, int &e)
{
	if (s.top == -1)
		return false; //栈空,报错
	e = s.data[s.top--]; //数据e先出栈,指针在减1
	return false;
}

栈--顺序栈的基本操作(对小白友好)_第3张图片

读取栈顶元素

bool GetTop(SqStack s, int &e)
{
    //判断栈是否为空
	if (s.top == -1)
		return false;
	e = s.data[s.top];
	return true;
}

销毁栈

bool DestoryStack(SqStack& s)
{
	s.top == -1;
	return true;
}

全部源码

#include
using namespace std;

#define MaxSize 50 //定义栈中元素最大个数

typedef struct {
	int data[MaxSize]; //存放栈中元素
	int top;         //栈顶指针
}SqStack;

//初始化
void InitStack(SqStack &s)
{
	s.top = -1;
}

//判断栈是否为空
bool StackEmpty(SqStack s)
{
	if (s.top == -1)
		return true;
	cout << "栈不为空";
	return false;
}


//进栈
bool Push(SqStack& s,int e)
{
	if (s.top == MaxSize - 1)
		return false;   //栈满
	s.data[++s.top] = e;
	return true;
}

//出栈
//数据还残留在栈中,只是在逻辑上被删除
bool Pop(SqStack& s, int &e)
{
	if (s.top == -1)
		return false; //栈空,报错
	e = s.data[s.top--]; //数据e先出栈,指针在减1
	return false;
}

//读取栈顶元素
bool GetTop(SqStack s, int &e)
{
	if (s.top == -1)
		return false;
	e = s.data[s.top];
	return true;
}

//栈的遍历
void PrintStack(SqStack s)
{
	if (s.top == -1)
		return;
	for (int i = 0; i <= s.top; ++i)
	{
		cout << s.data[i]<<" ";
	}
}

//销毁栈
bool DestoryStack(SqStack& s)
{
	s.top == -1;
	return true;
}
int main()
{
	SqStack s;

	//初始化
	InitStack(s);

	//判断栈是否为空
	StackEmpty(s);

	//进栈
	cout << "输入进栈的元素:";
	int e = 0;
	cin >> e;
	while (e != 9999)
	{
		Push(s, e);
		cout << "输入进栈的元素:";
		cin >> e;
	}

	//出栈
	Pop(s, e);
	cout << "出栈的元素为:" << e<<endl;

	//读取栈顶元素
	GetTop(s, e);
	cout << "栈顶的元素为:" << e << endl;

	//打印全部元素
	PrintStack(s);
	//销毁栈
	DestoryStack(s);
	return 0;
}

栈--顺序栈的基本操作(对小白友好)_第4张图片

对你有帮助,点个关注吧!!!

你可能感兴趣的:(数据结构,c++)