后进先出: (LIFO)
栈时一种另类的数组
操作:
入栈:push
出栈:pop
typedef struct { DataType data[N]; int top; }seqstack;
//创建一个空的顺序栈 linkstack * SeqstackCreate() { seqstack *s = (seqstack *)malloc(sizeof(seqstack)); s->top = -1; return s; }
//判断顺序栈是否为空 bool SeqstackIsEmpty(seqstack *s) { return s->top == -1?1:0; }
//判断顺序栈是否满 bool SeqstackIsFull(seqstack *s) { return s->top == N-1?1:0; }
//入栈 void SeqstackPush(seqstack *s,DataType value) { if(SeqstackIsFull(s)) { printf("栈已满\n"); return; } s->top++; s->data[s->top] = value; }
void SeqstackPrint(seqstack *s) { int n =s->top; while(n >=0) { printf("%d ",s->data[n]); n--; } putchar(10); }
DataType SeqstackPop(seqstack *s) { if(SeqstackIsEmpty(s)) { printf("栈已空\n"); return -1; } DataType value = s->data[s->top]; s->top--; return value; }