前端之家收集整理的这篇文章主要介绍了
【数据结构】 简单静态顺序栈的操作,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
/***
顺序栈
InitStack ( &S) : 栈的初始化
DestoryStack(&S) : 销毁栈S
Push ( &S,e) :进栈
Pop (&S ) : 出栈
GetTop (S ): 取栈顶元素
IsEmpty (S): 判栈空否
***/
#include <stdio.h>
#include <stdlib.h>
#define STACK_MAX 1000
typedef struct Stack
{
int top;
int elem[STACK_MAX];
}Stack,*Pstack;
void InitStack (Pstack S) ; // 栈的初始化
void Push (Pstack S,int num) ;// 进栈
void Pop (Pstack S ) ; // 出栈
int GetTop (Pstack S ); // 取栈顶元素
bool IsEmpty (Pstack S); // 判栈空否
void main()
{
int size;
Stack data;
Pstack S = &data;
InitStack(S);
printf("输入创建的栈的大小:");
scanf("%d",&size);
printf("进栈~\n");
for (int j = 0; j < size; j++)
{
Push(S,2*j+1);
}
printf("进栈完毕~\n");
printf("栈顶元素为 %d,\n",GetTop(S));
printf("出栈~\n");
Pop (S);
}
void InitStack (Pstack S) // 栈的初始化
{
S->top = 0;
for (int i = 0; i < STACK_MAX; i++)
S->elem[i] = 0;
}
void Push (Pstack S,int num) // 进栈
{
if (S->top != STACK_MAX) // 判断是否栈满
S->elem[(S->top)++] = num;
}
void Pop (Pstack S ) // 出栈
{
while (S->top != 0)
{
printf("%d\t",S->elem[-- (S->top)]);
}
printf("\n");
printf("出栈完毕~\n");
}
int GetTop (Pstack S ) // 取栈顶元素
{
if (!IsEmpty(S))
return S->elem[S->top-1];
else
printf("栈空~~\n");
}
bool IsEmpty (Pstack S) // 判栈空否
{
return (S->top == 0) ? true : false;
}