![423828e86a0a841fc99653e3f4596b7b.png](https://i-blog.csdnimg.cn/blog_migrate/ada2f69278c226cdbb3238905b32e283.png)
定义:栈是限定仅在表尾进行插入或者删除操作的线性表。因此对栈来说,尾端有其特殊含义,称为栈顶(top),相应的表头端称为栈底(bottom)。不含元素的空表称为空栈。
栈的特性:栈又称为先进后出的线性表。
![23ef646eafa6062f47d22a62c0432982.png](https://i-blog.csdnimg.cn/blog_migrate/b6c0b774bc46f6d1a4950f22dce8090b.jpeg)
下面我们来利用顺序栈实现基本的栈的操作:
先定义顺序栈:
#define MAXSIZE 10
typedef struct {
int data[MAXSIZE];//空间--静态分配
int top;//栈顶
}Stack;
其次对栈进行初始化
void initStack(Stack &s)
{
s.top=0;//栈为空
}
入栈操作:
//进栈(压栈)
void push(Stack &s,int x)
{
if(!isFull(s))//定义一个函数判断栈里面是否满了,满的话返回true;
{
s.data[s.top++]=x;
}
else
{
cout<<"The stack is full."<<endl;
}
}
出栈:
void pop(Stack &s,int &x)
{
//判断栈是否为空,为空返回true
if(!isEmpty(s))
{
x=s.data[--s.top];
}
else
{
cout<<"The stack is empty."<<endl;
}
}
输出栈中的元素:
void showStack(Stack s)
{
int i=s.top-1;
cout<<"stack:";
while(!isEmpty(s)&&i>=0)
{
cout<<s.data[i--]<<" ";
}
cout<<endl;
}
顺序栈的基本操作如上所示。大家是否掌握了呢??下面给大家出一个题目:输入十进制数据,将十进制数据转化为二进制数据,大家想想如何利用栈实现呢??给大家一点提示栈是先进后出!!!
如果大家对C/C++感兴趣的话,本小编这里准备了一大堆的学习资料可以免费分享给有需要的朋友们,大家关注我或者私信我回复“资料”都可免费领取一份学习资料哦!!!!