第五周项目1建立顺序栈算法库
来源:互联网 发布:怎样增加淘宝访客量 编辑:程序博客网 时间:2024/06/05 08:16
【项目1 - 建立顺序栈算法库】
定义顺序栈存储结构,实现其基本运算,并完成测试。
要求:
1、头文件sqstack.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:
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); //输出栈
2、在sqstack.cpp中实现这些函数
3、在main函数中完成测试,包括如下内容:
(1)初始化栈s
(2)判断s栈是否为空
(3)依次进栈元素a,b,c,d,e
(4)判断s栈是否为空
(5)输出栈长度
(6)输出从栈顶到栈底元素
(7)出栈,并输出出栈序列
(8)判断s栈是否为空
(9)释放栈
代码实现:
1.头文件sqstack.h:
#ifndef SQSTACK_H_INCLUDED#define SQSTACK_H_INCLUDED#define MaxSize 100typedef 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); //输出栈#endif
2.sqstack.cpp
#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);}//返回栈中元素个数——栈长度int StackLength(SqStack *s) { return(s->top+1);}//栈是否为空bool StackEmpty(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 true;}//输出栈void DispStack(SqStack *s) { int i; for (i=s->top;i>=0;i--) printf("%c ",s->data[i]); printf("\n");}
3.主函数main.cpp:
#include <stdio.h>#include "sqstack.h"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); return 0;}
运行结果:
知识点总结:
栈的运算受限 只能在表的一端进行插入和删除运算
学习心得:
栈先进后出 画图更明了
阅读全文
0 0
- 第五周项目1--建立顺序栈算法库
- 第五周 项目 1 建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1 -建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1--建立顺序栈算法库
- 第五周 项目1 -建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1 - 建立顺序栈算法库
- 第五周--项目1-建立顺序栈算法库
- 第五周项目1建立顺序栈算法库
- 第五周项目1---建立顺序栈算法库
- sql 常用语句和关键词
- Win10安装IIS问题
- 大数据开源组件图谱
- Set Similarity (25)
- Oracle——关于for update的锁表与解锁
- 第五周项目1建立顺序栈算法库
- Java和c/c++比较
- 计蒜客 跳跃问题
- Java基础总结
- 双端队列 (deque)
- bzoj1010: [HNOI2008]玩具装箱toy(斜率优化)
- python3和Python2的区别(一)
- TENSORFLOW新版本运行老版本代码报错解决(tensorboard) 2017.10最新版本
- 弱校胡策 复式八卦阵