顺序栈两种约定:
1.POP指向栈顶上一位,判断栈满就用POP==MAXSIZE-1。
2.POP指向栈顶,判断栈满就用POP==MAXSIZE。
学校老师示例的Sourcecode,感觉核心函数很简练,所以Mark下来了。
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define Maxsize 10 struct SStack { int data[Maxsize]; int top; }; struct SStack *Init_SeqStack() { struct SStack *s; s=(struct SStack *)malloc(sizeof(struct SStack)); s->top=-1; return s; } int Empty_SeqStack(struct SStack *s)//判断栈空 { if(s->top==-1) return 1; else return 0; } int Full_SeqStack(struct SStack *s) { if(s->top==Maxsize-1) return 1; else return 0; } int Push_SeqStack(struct SStack *s,int x) { if(Full_SeqStack(s)) { printf("栈已满,%d及以后的数据无法入栈\n",x); return 0; } else { s->top++; s->data[s->top]=x; return 1; } } int Pop_SeqStack(struct SStack *s,int *y)//出栈 { if(Empty_SeqStack(s)) { printf("\n栈已空!\n"); return 0; } else { *y=s->data[s->top]; s->top--; return 1; } } int main(int argc, char* argv[]) { int i,y,t,*c; struct SStack *p; p=Init_SeqStack(); printf("输入想要入栈的整形量(以0结束):\n"); scanf("%d",&y); while(Push_SeqStack(p,y)) { scanf("%d",&y); } while(Pop_SeqStack(p,&t)) { printf("%d ",t); } printf("\n再出栈一次\n"); fflush(stdin); getchar(); Pop_SeqStack(p,&t); system("pause"); return 0; }
Comments NOTHING