看完本章也可以刷下题:
栈的算法题 Offer 09:用两个栈实现队列
1.什么是栈?
大家知道刷盘子不 ,刷完一个盘子,放在最上面。 用盘子的时候,拿最上面的盘子用即可。
栈的数据 就相当于盘子, 往上放盘子 就相当于 添加数据, 用盘子时 ,把第一个盘子拿出来 就相当于 删除数据。 大家可以想想自己平时 洗完盘子 ,是如何放的? (尤其是结婚的 男同胞们。。)
显而易见,栈 的数据 是先来后删除 (最底下的盘子 第一个进栈 ,最后一个拿走)。
这就是栈:数据 先进后出,而且不能在中间 插入数据, 不然盘子可就被整的乱套了。
这时候 老婆。。。。用她那15厘米的大砍刀。。。。(不敢想象。。。。) .
- 栈 底 栈顶
栈的定义
定义栈:
// 定义栈
# define MaxSize =10;
typedef struct {
element data[]; //数组存放数据 element :类型 可以是 int char long 。。。。
int top ; //栈顶 指针
int bottom ;// 栈底 指针
} sqstack
栈的初始化
void InitStack ()
{
Sqstck q; //
q.top =0;
}
栈的增 删 改查
增加
void push (sqstack &l , element x)
{
if (top > MaxSize-1){
return false}
q.data[top] = x ;
top=top+1;
return ture;
}
删除
void pop (sqstack &l , element &x)
{
if (top < 0){
return false}
q.data[top] =null;
top=top-1;
return ture;
}
看完本章也可以刷下题:
栈的算法题 Offer 09:用两个栈实现队列