第五周项目1-建立顺序栈算法库
2016-10-27 10:37
211 查看
/*
copyright (t) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:1.cpp
*作者:车金阳
*完成日期:2016年10月27日
*版本号: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); //输出栈
#include <stdio.h>
#include <malloc.h>
#include "sqstack.h"
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)
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--;
printf("%c ",e);
return true;
}
bool GetTop(SqStack *s,Elemtype &e) //取栈顶数据元素
{
if(s->top==-1)
return false;
e=s->data[s->top];
return true;
}
void DispStack(SqStack *s) //输出栈
{
int i;
for(i=s->top;i>=0;i--)
{
printf("%c ",s->data[i]);
}
printf("\n");
}
#include <stdio.h>
#include "sqstack.h"
int main()
{
SqStack *s;
Elemtype e;
InitStack(s); //初始化栈s
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
Push(s,'a'); //a元素进栈
Push(s,'b'); //b元素进栈
Push(s,'c'); //c元素进栈
Push(s,'d'); //d元素进栈
Push(s,'e'); //e元素进栈
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
printf("栈长度为:%d\n",StackLength(s)); //输出栈长度
printf("从栈顶元素到栈底元素的输出序列为:\n");
DispStack(s); //输出从栈顶到栈底元素
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
printf("出栈序列为:\n"); //出栈,并输出出栈序列
while (!StackEmpty(s)) //栈不为空时输出出栈元素
Pop(s,e);
printf("\n");
DestroyStack(s); //销毁(释放)栈
printf("此栈已被销毁!\n");
return 0;
}
运行结果:
copyright (t) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:1.cpp
*作者:车金阳
*完成日期:2016年10月27日
*版本号: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); //输出栈
#include <stdio.h>
#include <malloc.h>
#include "sqstack.h"
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)
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--;
printf("%c ",e);
return true;
}
bool GetTop(SqStack *s,Elemtype &e) //取栈顶数据元素
{
if(s->top==-1)
return false;
e=s->data[s->top];
return true;
}
void DispStack(SqStack *s) //输出栈
{
int i;
for(i=s->top;i>=0;i--)
{
printf("%c ",s->data[i]);
}
printf("\n");
}
#include <stdio.h>
#include "sqstack.h"
int main()
{
SqStack *s;
Elemtype e;
InitStack(s); //初始化栈s
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
Push(s,'a'); //a元素进栈
Push(s,'b'); //b元素进栈
Push(s,'c'); //c元素进栈
Push(s,'d'); //d元素进栈
Push(s,'e'); //e元素进栈
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
printf("栈长度为:%d\n",StackLength(s)); //输出栈长度
printf("从栈顶元素到栈底元素的输出序列为:\n");
DispStack(s); //输出从栈顶到栈底元素
if(StackEmpty(s)) //判断s栈是否为空
printf("该栈是空栈\n");
else
printf("该栈不是空栈\n");
printf("出栈序列为:\n"); //出栈,并输出出栈序列
while (!StackEmpty(s)) //栈不为空时输出出栈元素
Pop(s,e);
printf("\n");
DestroyStack(s); //销毁(释放)栈
printf("此栈已被销毁!\n");
return 0;
}
运行结果:
相关文章推荐
- 第五周项目1-建立顺序栈算法库
- 第五周 项目一——建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周--项目1建立顺序栈算法库
- 第五周项目1——建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周-项目一 建立顺序栈算法库
- 第五周项目1--建立顺序栈算法库
- 第五周 项目一【建立顺序栈算法库】
- 第五周项目一 建立顺序栈算法库
- 第五周【项目一-建立顺序栈算法库】
- 第五周项目1—建立顺序栈算法库
- 第五周项目1建立顺序栈算法库