Shell脚本 Morecoin CSS选择器 JS bam delphi ssl automation vuejs 教程 ai视频教程下载 jquery的点击事件 js事件绑定 jquery获取元素宽度 软件测试实战项目 oracle自增长 java接收数组 后台管理网站模板 python新手教程 input函数python python例子 java基础语言 java实现栈 java8函数式编程 java项目下载 服务器系统下载 groupby linux操作系统原理 props 倒计时计时器 java疯狂讲义 dvwa安装教程 1660ti 电子商城系统 微信砍价活动怎么做 u盘系统下载 亚索刀光 司司网吧 3dmax2014下载 js递归函数 360越狱版
当前位置: 首页 > 学习教程  > 编程语言

顺序栈的实现(栈的顺序存储)

2021/1/28 23:29:33 文章标签:

一、栈的基本概念 栈是只允许在一端进行插入或删除操作的线性表 逻辑结构:与线性表相同 数据的运算:插入、删除操作有所区别 特点:后进先出 二、栈的顺序存储的实现 1.栈的定义和初始化 注意:在内存中还要申请top栈顶指针空间&…

一、栈的基本概念

栈是只允许在一端进行插入或删除操作的线性表
逻辑结构:与线性表相同
数据的运算:插入、删除操作有所区别
特点:后进先出

在这里插入图片描述

二、栈的顺序存储的实现

1.栈的定义和初始化

注意:在内存中还要申请top栈顶指针空间,top记录的是数组的下标
栈顶指针记录的是数组的下标

#define MaxSize 10       //定义栈中元素的最大个数

typedef struct 
{
	int data[MaxSize];  //静态数组存放栈中元素
	int top;            //栈顶指针

}SqStack;

void InitStack()
{
     S.top = -1;    //初始化栈顶指针
}

void testStack()
{
     SqStack S;    //声明一个顺序栈
     InitStack(S);

}

在这里插入图片描述

2.判断栈空

bool StackEmpty(SqStack S){
	if(s.top == -1){    //栈空
		return true;
	}else{
		return false;
	}
}

3.入栈和出栈操作

//新元素入栈
bool push(SqStack &s,int x)
{
	if(S.top == MaxSize-1){ //是否栈满
		return false;
	}
	S.top = S.top + 1;   //指针先加1
	S.data[S.top] = x;   //新元素入栈    S.data[++S.top] = x; 
	return true;
}

//出栈操作
bool Pop(SqStack &S,int &x)//注意引用符号
{
	if(S.top == -1){  //栈空
		return false;
	}
	x = S.data[S.top]; //栈顶元素先出栈  x = S.data[S.top--]
	S.top = S.top - 1; //指针减1
	return true;
}

4.读栈顶元素

//读栈顶元素
bool GetTop(SqStack S,int &x)
{
	if(S.top == -1){
		return false;
	}
	x = S.data[S.top]; //x记录栈顶元素
	return true;
}

三、共享栈

为提高内存空间利用率,两个栈共用一片空间

#define MaxSize 10       //定义栈中元素的最大个数

typedef struct 
{
	int data[MaxSize];  //静态数组存放栈中元素
	int top0;            //0号栈栈顶指针
    int top1;           //1号栈栈顶元素

}ShStack;

void InitStack(ShStack &S)
{
	S.top0 = -1;
	S.top1 = MaxSize;
}

栈满条件:top0 + 1 == top1


本文链接: http://www.dtmao.cc/news_show_650231.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?