栈的实现(数组)

概述

栈就不多做介绍了,之前我们讲的很多东西都涉及到了栈。我这里就说一下,如何通过数组和链表实现一个栈。

  • 数组
    大家肯定知道操作栈的几种命令比如 push pop之类的,学过汇编的都知道,push就是有一个栈顶指针,如果这个指针指向了栈的下一个单元,说明栈为空,push就会让这个指针上移,pop则相反。那么我们也可以通过数组这样来做,但是需要明确的是,栈的操作复杂度是O(1)每次只对栈顶元素操作。

image.png

#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/

本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!

(0)
上一篇 2024年11月14日 下午5:07
下一篇 6天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注