将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出
来源:互联网 发布:淘宝联盟怎么加入 编辑:程序博客网 时间:2024/05/01 15:38
头文件:函数的声明
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define STACKSIZE 100typedef int ElemType;typedef struct{ElemType stack[STACKSIZE];int top;}SeqStack;void InitStack(SeqStack *S);//初始化栈int StackEmpty(SeqStack S);//判断栈是否为空int GetTop(SeqStack S,ElemType *e);//取栈顶元素int PushStack(SeqStack *S,ElemType e);//入栈int PopStack(SeqStack *S,ElemType *e);//出栈int StackLength(SeqStack S);//求栈长度void ClearStack(SeqStack *S);//清空栈
函数的定义
#include "顺序栈.h"void InitStack(SeqStack *S)//将栈S初始化为空栈{S->top = 0;}int StackEmpty(SeqStack S)//判断栈是否为空,栈为空返回1,否则返回0{if(0 == S.top){return 1;}else{return 0;}}int GetTop(SeqStack S,ElemType *e)//取栈顶元素,将栈顶元素值返回给e,并返回1表示成功,返回0表示失败{if(S.top <= 0){printf("栈已经空!\n");return 0;}else{*e = S.stack[S.top-1];//取栈顶元素return 1;}}int PushStack(SeqStack *S,ElemType e)//进栈操作//将元素e进栈,元素进栈成功返回1,否则返回0{if(S->top >= STACKSIZE-1){printf("栈已满,不能入栈!");return 0;}else{S->stack[S->top] = e;S->top++;return 1;}}int PopStack(SeqStack *S,ElemType *e)//出栈操作{if(S->top <= 0){printf("栈已经没有元素,不能出栈!\n");return 0;}else{S->top--;*e = S->stack[S->top];return 1;}}int StackLength(SeqStack S)//返回栈长度{return S.top;}void ClearStack(SeqStack *S)//清空栈{S->top = 0;}
函数的应用
#include "顺序栈.h"/*将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出*/int main(void){SeqStack S;int i;ElemType a[] = {'a','b','c','d','e'};ElemType e;InitStack(&S);for(i = 0;i < sizeof(a)/sizeof(a[0]);i++){if(PushStack(&S,a[i]) == 0){printf("栈已满,不能进栈!");return 0;}}printf("出栈元素是:");if(PopStack(&S,&e) == 1){printf("%4c",e);}if(PopStack(&S,&e) == 1){printf("%4c",e);}printf("\n");printf("当前栈顶元素是:");if(GetTop(S,&e) == 0){printf("栈已空!");return 0;}else{printf("%4c\n",e);}if(PushStack(&S,'f') == 0){printf("栈已满,不能进栈!");return 0;}if(PushStack(&S,'g') == 0){printf("栈已满,不能进栈!");return 0;}printf("当前栈的元素个数是:%d\n",StackLength(S));printf("元素的出栈顺序是:");while(!StackEmpty(S)){PopStack(&S,&e);printf("%4c",e);}printf("\n");return 0;}
0 0
- 将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出
- 给出入栈序列为A,B,C,D,E,可能的出栈序列
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 将List a 和List b中的元素合并,没有重复的元素,最后返回这个合并的List
- 已知有枚举类型定义:enum MyEn{a=101,b,c=207,d,e,f,g},编程输出第5个枚举元素的序号值
- A b c d e f g
- 将2d和3d元素组合使用至gui中
- 利用链栈的基本运算,通过输入将字符进栈,然后输出其出栈序列
- 将二维数组中值最大的元素和左上角元素对调,然后将值最小的元素与右下角元素对调。
- 10.10将A和B合并成一个按元素递减链表
- [算法-java] 将一个矩阵按照从外向里以顺时针的顺序打印出每一元素
- 将字符数组A中下标为双号(0,2,4,5,8...)的元素值传给另一个字符数组B,然后将B数组的元素按逆序输出
- 将数据中的元素都向前移动一个位置,最后一个元素的值是原来第一个元素的值,然后输出这个数组。
- 将数组中的元素头尾两端依次对调
- 将数组非零元素依次移动到数组前端
- 2015-2-7冬令营日志
- 大素数判断和素因子分解(miller-rabin,Pollard_rho算法)
- 栈的顺序存储结构
- 浅析linux下GIT的使用
- 每天一点数据库之-----Day 2 创建与管理数据库表
- 将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出
- 第二周工作总结
- Spring并发访问的线程安全性问题
- URAL 1515. Cashmaster (数学啊 )
- [Android] 随时拍图像处理部分总结及源码分享
- 60后刘备聘用80后诸葛亮的启示
- VF中的Rerender为什么有时候不好用?
- C++学习笔记之第一章:入门
- 应用运筹管理经济