当前位置: 首页 > news >正文

通州网站建设站开发评价武汉百度搜索优化

通州网站建设站开发评价,武汉百度搜索优化,外贸营销网站,莱芜网逃人员本文主要内容:本文主要讲解栈的基本概念、基本操作和栈的顺序、链式实现。 目录 栈一、栈的基本概念1、基本概念2、基本操作 二、栈的顺序存储结构1、顺序栈的实现2、顺序栈的基本运算1)初始化2)判栈空3)进栈4)出栈5&a…

本文主要内容:本文主要讲解栈的基本概念、基本操作和栈的顺序、链式实现。

目录

    • 一、栈的基本概念
      • 1、基本概念
      • 2、基本操作
    • 二、栈的顺序存储结构
      • 1、顺序栈的实现
      • 2、顺序栈的基本运算
        • 1)初始化
        • 2)判栈空
        • 3)进栈
        • 4)出栈
        • 5)读栈顶元素
      • 3、共享栈
    • 三、栈的链式存储结构

操作受限的线性表

一、栈的基本概念

1、基本概念

栈是只允许在一端进行插入或删除操作的线性表。
栈顶:线性表允许进行插入和删除的一端
栈底:不允许进行插入和删除的另一端
空栈:不含任何元素的空表
假设某个栈S=(a1,a2,a3,a4,a5),如下图所示,则a1为栈底元素,a5为栈顶元素。由于栈只能在栈顶进行插入和删除操作,所以S的进栈次序为a1,a2,a3,a4,a5,出栈次序为a5,a4,a3,a2,a1栈的操作特性为后进先出(LIFO)
栈的操作
n个不同元素进栈,出栈元素有↓,下述公式成为卡特兰数。
( 1 / ( n + 1 ) ) ∗ C 2 n n . \ (1/(n+1))*C^{n}_{2n}\,.  (1/(n+1))C2nn.

2、基本操作

InitStack(&S);//初始化一个空栈S
StackEmpty(S);//判断一个栈是否为空,若栈S为空则返回true,否则返回false
Push(&S,x);//进栈,若栈S未满,则将x加入使之成为新栈顶
Pop(&S,&x);//出栈,若栈非空,则弹出栈顶元素,并用x返回
GetTop(S,&x);//读栈顶元素,若栈S非空,则用x返回栈顶元素
DestroyStack(&S);//销毁栈,并释放栈S占用的存储空间(&表示引用调用)
注意:只要题干没有特别表明,基本操作对应的函数可以直接使用

二、栈的顺序存储结构

因为栈本质上是一种操作受限的线性表,所以它也有两种存储方式——顺序存储和链式存储。

1、顺序栈的实现

采用顺序存储的栈称为顺序栈,它利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)来指示当前栈顶元素的位置。
栈顶顺序存储类型为:

#define MaxSize 50//定义栈中元素的最大个数
typedef struct{Elemtype data[MaxSize];//存放栈中元素int top;//栈顶元素
}SqStack;

栈顶指针:S.top,初始时设置S.top=-1
栈顶元素:S.data[S.top]
进栈操作:栈不满时,栈顶指针先加1,再送值到栈顶元素
栈空条件:S.top==-1
栈满条件:S.top==MaxSize-1
栈长:S.top+1
顺序栈的入栈操作受数组上界的约束,当对栈的最大使用空间估计不足时,有可能发生栈上溢。

2、顺序栈的基本运算

顺序栈上常用的基本运算的实现如下:

1)初始化

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

2)判栈空

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

3)进栈

bool Push(SqStack &S,ElemType x){if(S.top==MaxSize-1) return false;//栈满S.data[++S.top]=x;//栈顶指针+1,x进栈return true;
}

4)出栈

bool Pop(SqStack &S,ElemType &x){if(S.top==-1) return false;//栈空x=S.data[S.top--];//元素出栈,栈顶指针-1return true;
}

5)读栈顶元素

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

3、共享栈

因为栈底位置相对不变,可以让两个顺序栈共享一个一维数组,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间中间延伸。
共享栈
栈空:top1=-1时0号栈为空,top2=MaxSize时1号栈为空
栈满:top2-top1=1时,栈满
入栈:top1先+1再赋值,top2先-1再赋值
出栈:top1-1,top2+1

三、栈的链式存储结构

采用链式存储的栈称为链栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现,并规定所有操作都是在单链表的表头进行的。规定链栈没有头结点,Lhead指向栈顶元素。如下图所示:
链栈
采用链栈存储,便于结点的插入与删除。链栈的操作与链表类似,入栈和出栈的操作都在链表的表头进行。

另有操作受限的线性表——队列见链接:【待补充】

本文内容为个人学习总结所得,如有问题欢迎讨论和指正。

http://www.hkea.cn/news/792321/

相关文章:

  • 杭州 企业门户网站建设爱链
  • dj那个网站做的好长沙公司网络营销推广
  • 设计师培训招生视频黑帽seo联系方式
  • 做网上贸易哪个网站好西宁网站seo
  • 电子烟网站建设杯子软文营销300字
  • 广州企业网站制作怎么做营销推广
  • 网站建设服务器在香港郑州网站建设专业乐云seo
  • 河北建设工程交易信息网海口关键词优化报价
  • 全国网站建设公司有多少家微信朋友圈广告投放收费标准
  • 免费做网站公司黑帽seo排名技术
  • apk连接wordpress上海seo
  • 企业建网站租用服务器好还是买一个好石家庄网站关键词推广
  • wordpress文件解析外贸网站优化
  • 建设工程竣工备案网站百度保障中心人工电话
  • 韶关城乡建设部网站首页营销型网站建设策划书
  • 建设银行手机银行下载官方网站谷歌浏览器网页版入口在哪里
  • 网站建设 好域名注册信息
  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些
  • 扬中做网站的公司seo虚拟外链
  • 永川集团网站建设免费网站seo诊断
  • 国外 上海网站建设网络营销推广方式案例
  • 24手表网站网络技术推广服务
  • 鞍山网站制作推广游戏推广员判几年
  • 360如何做网站优化网页设计制作软件
  • 金华网站建设电话电商运营主要负责什么
  • 百度的官方网站游戏推广工作好做吗
  • 著名的深圳网站建设网页快照