栈的实现(数组)

概述

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

  • 数组
    大家肯定知道操作栈的几种命令比如 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]);
	}
}
C++

这里面的函数有push、pop、top、Print、Isempty

讲解

push

申明一个变量top = -1;如果我们要push 那么top会+1 并且以此为索引把数放到数组中去。

pop

top-1 数组中的数不用管,再push的话会替换掉

Isempty

判断top是不是等于-1 等于则为空

top

取栈顶的元素,也就是Arry[top]的数组
很好理解

C语言

双向链表

2024-11-14 17:07:24

C语言

栈的实现(链表)

2024-11-14 17:17:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

Powered by atecplugins.com