8.考研-数据结构-栈之顺序栈的基本操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Suyebiubiu/article/details/80490518
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
/*
顺序栈
几个状态:1.栈空状态  2.栈满状态  3.非法状态(上溢和下溢)
*/
#include "stdafx.h"
#include<iostream>
using namespace std;
#define maxSize 500
//顺序栈的结构体
typedef struct {
	int data[maxSize];
	int top;
}Sqstack;

//1.初始化栈(实际中一般不会调用这个方法,见主函数创建一个stack部分)
void initStack(Sqstack *stack) {
	stack->top = -1;//初始化栈,只需要将栈顶指针设置为-1
}
//2.判断栈是否为空,栈为空的时候返回1,否则返回0
int isEmpty(Sqstack stack) {
	if (stack.top=-1) {
		return 1;
	}
	else
	{
		return 0;
	}
}
//3.进栈的代码
int push(Sqstack *stack,int x) {
	if (stack->top==maxSize-1) {//栈满的时候不能进栈
		return 0;
	}
	++(stack->top);//先移动指针,再进栈
	stack->data[stack->top] = x;
	return 1;
}


//4.出栈的代码
int  pop(Sqstack *stack) {
	if (stack->top==-1) {//如果栈为空,则不能出栈
		return 0;
	}
	int x = stack->data[stack->top];//先取出元素再移动指针
	--(stack->top);
	return 1;
}

int main()
{
	//一般情况下,栈的写法很简单,上述函数仅供参考,使用价值不高,常用的写法如下所示(比较实用):
	//1.定义一个栈并且进行初始化
	int stack[maxSize];
	int top = -1;
	//2.元素x进栈
	int x;
	cin >> x;
	stack[++top] = x;
	//3.元素出栈(输出栈顶元素)
	x=stack[top--];
	cout << x << endl;
	//防止程序一闪而过
	int f;
	cin >> f;
    return 0;
}


猜你喜欢

转载自blog.csdn.net/Suyebiubiu/article/details/80490518
今日推荐