sqstack.h代码
/*
*Copyright (c) 2017,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:
*作 者:陈军正
*完成日期:2017年10月10日
*版 本 号:v1.0
*
* 定义顺序栈存储结构,实现其基本运算,并完成测试。
*/
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top; //栈指针
} SqStack; //顺序栈类型定义
void InitStack(SqStack *&s); //初始化栈
void DestroyStack(SqStack *&s); //销毁栈
bool StackEmpty(SqStack *s); //栈是否为空
int StackLength(SqStack *s); //返回栈中元素个数——栈长度
bool Push(SqStack *&s, ElemType e); //入栈
bool Pop(SqStack *&s, ElemType &e); //出栈
bool GetTop(SqStack *s, ElemType &e); //取栈顶数据元素
void DispStack(SqStack *s); //输出栈
main.cpp代码
#include <stdio.h>
#include "sqstack.h"
#include <iostream>
int main()
{
ElemType e;
SqStack *s;
printf("(1)初始化栈s\n");
InitStack(s);
printf("(2)栈为%s\n", (StackEmpty(s) ? "空" : "非空"));
printf("(3)依次进栈元素a,b,c,d,e\n");
Push(s, 'a');
Push(s, 'b');
Push(s, 'c');
Push(s, 'd');
Push(s, 'e');
printf("(4)栈为%s\n", (StackEmpty(s) ? "空" : "非空"));
printf("(5)栈长度:%d\n", StackLength(s));
printf("(6)从栈顶到栈底元素:"); DispStack(s);
printf("(7)出栈序列:");
while (!StackEmpty(s))
{
Pop(s, e);
printf("%c ", e);
}
printf("\n");
printf("(8)栈为%s\n", (StackEmpty(s) ? "空" : "非空"));
printf("(9)释放栈\n");
DestroyStack(s);
system("pause");
return 0;
}
sqstack.cpp 代码
#include <iostream>
#include "sqstack.h"
#include <malloc.h>
using namespace std;
void InitStack(SqStack *&s) //初始化栈
{
s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1;
}
void DestroyStack(SqStack *&s) //销毁栈
{
free(s);
}
bool StackEmpty(SqStack *s) //栈是否为空
{
return (s->top == -1);
}
int StackLength(SqStack *s) //返回栈中元素个数——栈长度
{
return (s->top + 1);
}
bool Push(SqStack *&s, ElemType e) //入栈
{
if (s->top == MaxSize - 1)
return false;
s->top++;
s->data[s->top] = e;
return true;
}
bool Pop(SqStack *&s, ElemType &e) //出栈
{
if (s->top == -1)
return false;
e = s->data[s->top];
s->top--;
return true;
}
bool GetTop(SqStack *s, ElemType &e) //取栈顶数据元素
{
if (s->top == -1)
return false;
e = s->data[s->top];
return false;
}
void DispStack(SqStack *s) //输出栈
{
int i;
for ( i = s->top; i >=0; i--)
{
cout << s->data[i] << " ";
}
}
运行结果
总结:学习栈的基本使用