三个基础栈的写法(顺序栈,双端顺序栈,链栈)

本文介绍了三种基本的栈实现:顺序栈、双端顺序栈和链栈。顺序栈是基于数组实现,双端顺序栈在顺序栈基础上增加了一端,便于操作栈的头部元素。链栈则使用链表作为底层数据结构,提供了灵活的插入和删除操作。
摘要由CSDN通过智能技术生成

简单说一下几个类型的栈堆吧

顺序栈

在这里插入图片描述

// 顺序栈堆是拥有后进先出的特点,就是所谓的“FILO”,利用这一特点。
顺序栈由于是数组表示栈,所以栈中空间是连续的,栈底位置不变,
栈顶(指针)位置变化。
#include <stdio.h>
#define Stack_Size 10 //栈中元素最大值
#define ElementType int

typedef struct{
   
	ElementType e[Stack_Size]={
   0};//初始化栈中元素
	int top;//存放栈顶指针下标
}SeqStack;

void InitStack(SeqStack *s){
   
	s->top=-1;//-1表空栈
}

int Push(SeqStack *s,ElementType x){
   
	if(s->top==Stack_Size-1)//判断是否栈满
		return false;
	s->top++;
	s->e[s->top]=x;
	return true;
}

int Pop(SeqStack *s,ElementType &x){
   
	if(s->top==-1)//判断是否栈空
		return false;
	x=s->e[s->top];
	s->top--;
	return true;
}

int PrintStack(SeqStack *s){
   
	for(int i=0;i<=Stack_Size-1;i++)//遍历栈
		printf("%d ",s->e[i]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值