概述
栈就不多做介绍了,之前我们讲的很多东西都涉及到了栈。我这里就说一下,如何通过数组和链表实现一个栈。
- 数组
大家肯定知道操作栈的几种命令比如 push pop之类的,学过汇编的都知道,push就是有一个栈顶指针,如果这个指针指向了栈的下一个单元,说明栈为空,push就会让这个指针上移,pop则相反。那么我们也可以通过数组这样来做,但是需要明确的是,栈的操作复杂度是O(1)每次只对栈顶元素操作。
#include<stdio.h>
#define MAX_szie 101
int top = -1;
int A[MAX_szie];
void push(int x);
void pop();
void Isempty();
int Top();
void Print();
int main()
{
push(2);
push(4);
push(7);
push(9);
pop();
pop();
Print();
}
void push(int x)
{
if (top == MAX_szie-1)
{
return;
}
A[++top] = x;
}
void pop()
{
if (top == -1)
{
return;
}
top--;
}
void Isempty()
{
if (top == -1)
{
printf("yes");
}
else
{
printf("no");
}
return;
}
int Top()
{
return A[top];
}
void Print()
{
for (size_t i = 0; i <=top; i++)
{
printf("%d ", A[i]);
}
}
这里面的函数有push、pop、top、Print、Isempty
讲解
push
申明一个变量top = -1;如果我们要push 那么top会+1 并且以此为索引把数放到数组中去。
pop
top-1 数组中的数不用管,再push的话会替换掉
Isempty
判断top是不是等于-1 等于则为空
top
取栈顶的元素,也就是Arry[top]的数组
很好理解
网站标题:CV鼻祖洋芋
原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c-2/153/
本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!