目录
栈和队列对应两种不同的处理顺序,以及两个相应的数据结构
栈:先进后出。例如:仓库进货、出货。
队列:先进先出。例如:排队打疫苗。
栈
栈中数据后进先出,先进后出。
栈只有一个开口,先进去的数据在栈底,后进来的数据在栈顶。栈结构的数据操作只在栈顶。
使用数组实现栈
int arr[100] = { 0 };
int top = -1;//栈顶元素的下标 因为上面初始化是0,所以top初始化为
入栈操作
//入栈操作
void push(int data)
{
if (top >= 99)
{
printf("栈满了\n");
return 0;
}
++top;
arr[top] = data;
}
出栈操作
//出栈操作
int pop()
{
if (top < 0)
{
printf("栈空");
}
//先取出下标然后top值-1
int val = arr[top];
top--;
return val;
}
或者
//出栈操作
int pop()
{
if (top < 0)
{
printf("栈空");
}
int val = arr[top--];
return val;
}
主函数调用
int main()
{
for (int i = 0; i < 10; i++)
{
push(i + 1);
// //出栈 10个元素
for (int i = 0; i < 10; i++)
{
printf("%d ", pop());
}
return 0;
}
}