順序棧的基本操作實現c++
阿新 • • 發佈:2019-01-21
注:若有問題或需要補充的內容請告之,新手上路,謝謝。
#include<stdlib.h> #include<stdio.h> #include<math.h> #include<cstring> #include<string> #include<algorithm> #include<ctype.h> using namespace std; #define MAXSIZE 100 /*結構體*/ typedef struct lnode { int data[MAXSIZE]; int top; }seqstack; /*初始化*/ seqstack *init_stack() { seqstack *s; s=(seqstack*)malloc(sizeof(seqstack)); s->top=-1; return s; } /*判斷棧空*/ bool is_empty_seqstack(seqstack s) { if(s.top==-1) { return true; } else { return false; } } /*銷燬棧*/ void delete_stack(seqstack *s) { s->top=-1; printf("棧銷燬成功\n"); } /*判斷棧滿*/ bool is_full_seqstack(seqstack s) { if(s.top==MAXSIZE-1) { return true; } else { return false; } } /*進棧*/ void push(seqstack *s,int e) { if(is_full_seqstack(*s)) { printf("棧滿"); } else { s->data[++s->top]=e; } } /*出棧*/ void pop(seqstack *s,int &e) { if(is_empty_seqstack(*s)) { printf("棧空"); } else { e=s->data[s->top--]; } } /*取棧頂元素*/ void get_top(seqstack s,int &e) { if(is_empty_seqstack(s)) { printf("棧空"); } else { e=s.data[s.top]; } } /*輸出棧*/ void print(seqstack s) { while(!is_empty_seqstack(s)) { printf("%d",s.data[s.top--]); } } int main() { seqstack *s; int l,e; s=init_stack(); printf("請輸入需要入棧的元素個數:"); scanf("%d",&l); printf("請依次輸入入棧的元素:"); for(;l>0;l--) { scanf("%d",&e); push(s,e); } printf("依次出棧的元素為:"); while(!is_empty_seqstack(*s)) { pop(s,e); printf("%d",e); } printf("\n"); delete_stack(s); return 0; }