数据结构与算法 第三章 栈
1.定义:一种运算受限的线性表。是允许在同一端进行插入和删除操作的特殊线性表。栈顶可插入删除,栈底不行。先进后出。
先讲一下C++:
STL<stack>
stack<int> s;
s.size():返回栈中当前元素的数量
s.pop():移除栈顶元素
s.push(value
):将value
压入栈顶,成为新的栈顶元素
s.top():返回栈顶元素
s.empty():若栈为空,返回true
;否则返回false
2.栈的顺序存储:
利用静态数组实现:
typedef struct {//栈结构int top;//栈顶elsemtype data[MAXSIze]
}stack;
top=0;时为空栈。
stack s;
s.top==MAXSIze;栈满
获取元素个数:
int lengthStack(stack S){return S.top;
}
获取栈顶元素:
int getTop(stack S,elemtype*e){if(emptyStack(S)==S){*e=S.data[S.top-1];return 1;}else{return 0:}
入栈:
bool push(Stack *s, int value) {if (isFull(s)) {printf("栈已满,无法入栈!\n");return false;}s->data[++s->top] = value;return true;
}
出栈:
int pop(SeqStack *s, bool *success) {if (isEmpty(s)) {*success = false;printf("栈为空,无法出栈\n");return 0; // 栈空时返回值无意义}*success = true;return s->data[s->top--]; // 返回栈顶元素,同时栈顶指针减1
}
清空栈:
void clearStack(stack*S){
S->top=0;
}