顺序栈
来源:互联网 发布:lufylegend.js 编辑:程序博客网 时间:2024/06/08 01:00
//seqstack.h
#include<string.h>#include<malloc.h>#include<limits.h>#include<stdio.h>#include<io.h>#include<math.h>#include<process.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR -1#define INFEASIBLE -1#define MAXSIZE 100typedef int DataType;typedef struct{ DataType data[MAXSIZE]; int top;}SeqStack;void SStackSetNull(SeqStack *s)//初始化置空栈{ s=(SeqStack*)malloc(sizeof(SeqStack)); s->top=-1;}int SStackIsEmpty(SeqStack *s)//判断栈空{ return (s->top<0?TRUE:FALSE);}int SStackPush(SeqStack *s,DataType x)//入栈操作{ if(s->top==MAXSIZE-1) { printf("溢出\n"); return FALSE; } else { s->top=s->top+1; s->data[s->top]=x; return TRUE; }}int SStackPop(SeqStack *s,DataType *x)//出栈操作{ if(s->top==-1) { printf("溢出\n"); return FALSE; } else { *x=s->data[s->top]; s->top--; return TRUE; }}DataType SStackGetTop(SeqStack *s)//获得栈顶元素{ if(s->top==-1) { printf("溢出\n"); return FALSE; } else return (s->data[s->top]);}void SStackPrint(SeqStack *s)//输出栈{ int p; if(SStackIsEmpty(s)==TRUE) { printf("栈空\n"); } else { printf("栈的数据元素如下:\n"); p=s->top; while(p>=0) { printf("%d\n",s->data[p]); p--; } printf("\n\n"); }}int SStackIsFull(SeqStack *s)//判断栈满{ return (s->top==MAXSIZE-1?TRUE:FALSE);}
//main.cpp
#include"seqstack.h"int main(){ DataType x; SeqStack ss; int read=0; do { puts("关于顺序栈的操作:\n"); puts("1.置空栈"); puts("2.入栈"); puts("3.出栈"); puts("4.输出"); puts("0.退出"); printf("请选择代号:"); scanf("%d",&read); printf("\n"); switch(read) { case 1: SStackSetNull(&ss); break; case 2: printf("输入入栈的数据元素:"); scanf("%d",&x); SStackPush(&ss,x); break; case 3: if(SStackPop(&ss,&x)!=FALSE) printf("出栈的数据元素是:%d\n",x); break; case 4: SStackPrint(&ss); break; } }while(read!=0); return 0;}
阅读全文
0 0