一、顺序栈的基本概念
栈是一种特殊的线性表,规定它的插入和删除运算均在线性表的同一端进行,进行插入和删除操作的那一端称为栈顶,另一端称为栈底。栈的插入和删除操作分别简称进栈和出栈。
顺序栈的基本存储结构
#define Maxsize 100 typedef int datatype; typedef struct { datatype a[Maxsize]; int top; }sequence_stack;
二、顺序栈的操作集合
//void init(sequence_stack *s) //int empty(sequence_stack s) //int full(sequence_stack s) //datatype get_top(sequence_stack *s) //void pop(sequence_stack *s) //void push(sequence_stack *s,datatype x) //void print_down(sequence_stack s) //void print_up(sequence_stack s)
三、顺序栈的代码实现
顺序栈的初始化
/**************************************/ /* 函数名:init */ /* 函数功能:顺序栈的初始化--置空栈 */ /* 函数参数:s顺序栈 */ /* 函数返回值:null */ /**************************************/ void init(sequence_stack *s) { s->top=-1; }
判断顺序栈是否为空
/**************************************/ /* 函数名:empty */ /* 函数功能:判断顺序栈是否为空 */ /* 函数参数:s顺序栈 */ /* 函数返回值:int。1为栈空,0为非空 */ /**************************************/ int empty(sequence_stack s) { return s.top==-1? 1:0; }
判断顺序栈是否满
/**************************************/ /* 函数名:full */ /* 函数功能:判断顺序栈是否满 */ /* 函数参数:s顺序栈 */ /* 函数返回值:int。1为栈满 */ /**************************************/ int full(sequence_stack s) { return s.top==Maxsize-1? 1:0; }
取出栈顶元素
/**************************************/ /* 函数名:get_top */ /* 函数功能:取出栈顶元素 */ /* 函数参数:s顺序栈 */ /* 函数返回值:datatype。-999栈为空 */ /**************************************/ datatype get_top(sequence_stack s) { if(empty(s)){ printf("栈为空,无法取出栈顶元素!\n"); return -999; } else return s.a[s.top]; }
出栈
/*******************************/ /* 函数名:pop */ /* 函数功能:出栈 */ /* 函数参数:s顺序栈 */ /* 函数返回值:null */ /*******************************/ void pop(sequence_stack *s) { if(empty(*s)) printf("栈为空,无法出栈!\n"); else{ s->top--; //printf("成功出栈!\n"); } }
进栈
/*******************************/ /* 函数名:push */ /* 函数功能:进栈 */ /* 函数参数:s顺序栈 */ /* x进栈元素 */ /* 函数返回值:null */ /*******************************/ void push(sequence_stack *s,datatype x) { if(!full(*s)){ s->a[++s->top]=x; //printf("成功进栈!\n"); } else{ printf("栈已满,无法进栈!\n"); } }
打印栈(从上到下)
/********************************/ /* 函数名:print */ /* 函数功能:打印栈(从上往下) */ /* 函数参数:s顺序栈 */ /* 函数返回值:null */ /********************************/ void print_down(sequence_stack s) { int i; if(!empty(s)){ for(i=s.top;i>=0;i--) printf("%d ",s.a[i]); printf("\n"); } }
打印栈(从下到上)
/********************************/ /* 函数名:print */ /* 函数功能:打印栈(从下往上) */ /* 函数参数:s顺序栈 */ /* 函数返回值:null */ /********************************/ void print_up(sequence_stack s) { int i; if(!empty(s)){ for(i=0;i<=s.top;i++) printf("%d ",s.a[i]); printf("\n"); } }
φ(゜▽゜*)♪ 感谢观看,希望对你有帮助!
标签:顺序,函数,sequence,int,及其,top,操作,stack From: https://www.cnblogs.com/yihong-song/p/16902671.html