栈的定义和简单使用
栈(Stack)其实也是线性结构,但只是在操作上有点不一样,栈的特点,后进先出(FILO),所以他也有不同的应用,比如进制转换啊,括号匹配问题啊,表达式求值问题啊,很多问题都是可以用栈来解决,
下面来说说栈的定义和栈上面的相关操作,
1.定义栈的节点
#include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct { int* base; int* top; int StackSize; }Stack;
2.栈的初始化操作
int initStack(Stack *s) { s->base = (int*)malloc(sizeof(Stack) * MaxSize); if (s->base) { s->top = s->base; s->StackSize = MaxSize; return 0; } else { return -1; } }
3.获得栈的大小
int getSize(Stack* s) { return s->StackSize; }
4.获得栈顶元素操作
int getElem(Stack* s) { if (s->base!=s->top) { return *(s->top-1); } else { return -1; } }
5.入栈操作
int pushStack(Stack *s,int e) { if (s->top-s->base<s->StackSize) { *(s->top++) = e; return 0; } else { return -1; } }
6.出栈操作
int popStack(Stack *s,int e) { if (s->base!=s->top) { e = *(--s->top); return e; } else { return -1; } }
好了,我们下回见,peace

浙公网安备 33010602011771号