DoubleExprience

数据结构------顺序栈

/*
创建一个顺序栈
基本操作:初始化、判空、入栈、出栈、读栈
顺序栈: 1.最大长度 2.如何存入数据 3.栈头指针top
*/
#include <stdio.h>
#define Maxsize 10
typedef struct
{
int data[Maxsize]; //静态数组存入数据
int top;
}SqStack;

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

//判空
int StackEmpty(SqStack Q)
{
if (Q.top == -1)
return 1;
else
return 0;
}


//入栈
int Push(SqStack *Q, int e)
{
//有空间可以入栈吗?
if ((*Q).top == Maxsize - 1)
return 0;
//可以入栈 指针先加1,再送元素
(*Q).top++;
(*Q).data[(*Q).top] = e;
return 1;
}

//出栈
int Pop(SqStack *Q, int *e)
{
//有元素给你出吗?
if ((*Q).top == -1)
return 0;
//有元素出 先送元素 ,再指针减一
*e = (*Q).data[(*Q).top];
(*Q).top--;
return *e;
}

//读栈
int GetTop(SqStack Q, int *e)
{
//有元素可以读取吗?
if (Q.top == -1)
return 0;
//有元素可以读, 只读
*e = Q.data[Q.top];
return *e;
}


int main()
{
int e = 0; //接收出栈元素
SqStack S; //创建一个顺序栈
InitStack(&S); //初始栈
StackEmpty(S); //判断空
Push(&S, 3); //入栈
e = Pop(&S,&e); //出栈
printf("出栈元素是 %d \n",e);

Push(&S, 5);
e = GetTop(S,&e); //读栈
printf("读栈元素是 %d\n",e);


return 0;
}

posted on 2021-07-12 17:09  DoubleExprience  阅读(111)  评论(0编辑  收藏  举报

导航