数据结构之栈和队列(伪码及实例)

本文介绍了栈和队列这两种基本数据结构。栈是一种先进后出(FILO)的数据结构,操作主要在栈顶进行,包括入栈和出栈。队列则遵循先进先出(FIFO)原则,允许在队尾进行插入,在队头进行删除。文章通过伪代码展示了栈和队列的操作,并提供了实例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈的基本概念

**栈:**是一种运算受限的线性表。限定仅在表尾(栈顶)进行插入和删除操作的线性表(先进后出)。
**入栈:**从开口(栈顶)依次进入,不能从中间插入元素。
在这里插入图片描述
**出栈:**从开口(栈顶)依次出栈。
在这里插入图片描述

栈(伪代码)

typedef struct
{
   
   
	ElemType* base; //指向栈低的指针变量
	ElemType* top;  //指向栈顶的指针变量
	int stackSize;  //栈的当前容量
}Stack;
//创建栈
#define E  100
initStack(Stack *p)
{
   
   
	p->base = (ElemType*)malloc(sizeof(Elemtype));
	if(p.base == NULL)
	{
   
   
		exit(0);
	}
	p->top = p->base;
	p->statSize = E;

}
//入栈
#define E 10
Push(Stack *p, ElemType e)
{
   
   
	//栈满则扩大栈的空间
	if( p->op - p.base >= p->stackSize )
	{
   
   
		p->base = (ElemType *)realloc(p->base, (p->stackSize + E) * sizeof(Elemtype));
		if(s->base == NULL)
		{
   
   
			exit(0);
		}
		p->top = p.base +p->statSize;     //更新栈顶
		p->stackSize = p->stackSize + E;  //更新栈的容量
	}	
	*(p->top) = e;
	p->top++;
}
//出栈
Pop(Stack *p, ElemType *e)
{
   
   
	if( p->top == s->base ) //栈空
	{
   
   
		return}
	*(s->top) = *((s->top)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值