栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
#define Stack_Size 50 typedef struct { char elem[Stack_Size];//用来存放栈中的元素的一维数组 int top; //用来存放栈顶元素的下标,top为-1表示空栈 }SeqStack;
void InitStck(SeqStack * S) { //构造一个空栈S S->top = -1; }
int Push(SeqStack * S, int x) { //将x置入S栈新栈顶 if (S->top == Stack_Size - 1)return(false); S->top++; S->elem[S->top] = x; return(true); }
int Pop(SeqStack * S, int *x) { //将S栈顶元素弹出,放到x所指定的存储空间中打出 if (S->top == 1)//栈为空 return(false); else { *x = S->elem[S->top];//栈顶元素赋给 S->top--;//修改栈项指针 return(true); } }
int GetTop(SeqStack * S, int * x) { //将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保存不变 if (S->top == -1)//栈为空 return(false); else { *x = S->elem[S->top];//栈顶元素赋给 return(true); } }
代码来自《数据结构—用C语言描述》耿国华等人著。
若有错误,欢迎指出批评,欢迎讨论。 每文一句:如果敌人让你生气,那说明你还没有胜他的把握。如果朋友让你生气,那说明你仍然在意他的友情。
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句