03、栈和队列

本文介绍了栈和队列这两种数据结构的基本概念和实现方式,包括顺序栈、链栈、顺序队列、链式队列和双端队列。详细阐述了括号匹配、表达式求值(中缀、后缀、前缀表达式)的问题,并讨论了递归函数栈的工作原理。同时,探讨了队列在树的层序遍历和图的广度优先遍历等实际问题中的应用。
摘要由CSDN通过智能技术生成

03、栈和队列

1、栈的基本概念

逻辑结构:

操作受限的线性表:只允许在一端进行增加和删除的线性表。

特点:先进后出

卡特兰数:

image-20230321211226440

2、顺序栈的实现

定义:

typedef struct{
   
	int data[Maxsize];
	int top;
}Stack;

top是指向栈顶元素

进栈和出栈操作:

bool Push(SqStack *s,int x){
   
	if(s->top == -1){
   
		return false;
	}
	if(s->top >= Maxsize-1){
   
		return false;
	}
	s->top++;
	s->data[s->top] = x;
	return true;
} 

bool Pop(SqStack *s,int *x){
   
	if(s->top == -1){
   
		return false;
	}
	*x = s->data[s->top];
	s->top--;
	return true;
}

共享栈:

image-20230321222146735

销毁时内存自动回收

3、链栈

和线性表当中的链表一样,只是进栈和出栈操作都是对头结点进行后插和后删操作一样。

//带头结点初始化
bool InitLink(LinkList *p){
   
	*p = (LNode*)malloc
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值