表、栈、队列数据结构学习

1、表ADT

表的数组实现:

对表的所有操作都是可以通过使用数组来实现的。虽然数组是动态指定的,但是还是需要对表的大小的做大致进行估计。通常需要估计的大一些,从而浪费大量的时间,这是严重的局限。

表的链表实现:

为避免插入和删除的线性开销,我们需要允许表可以不连续存储,否则表的部分或者全部需要整体移动。

链表由一系列不存在内存中相连的结构组成。每一个结构均含有表元素和只想包含该元素后继元的结构的指针。最后一个单元的next指针指向NULL。


首先,平布存在从所给定义出发在表的前面插入元素的真正显性的方法。

第二,从表的前面实型删除是一个特殊情况,因为她改变了表的起始段。

第三,这个问题设计一般的删除。


解决办法:增加头结点。


2、栈(ADT)

栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(Top)。

对栈的基本操作有push(进栈)和pop(出栈)

由于栈是一个表,因此任何实现表的方法都能实现栈。


栈的链表实现

栈的第一种实现方式 是使用单链表,我们通过在表顶端插入来实现push,再通过删除表顶端元素实现pop。

栈的数组实现

栈的数组实现是比较流行的方法,这种策略的唯一潜在的危害是需要提前申明一个数组的大小。


栈的应用:

检验是否每个符号都能成对出现,

做一个空栈。读入字符直到文件尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则将栈空时报错。否则,将栈元素弹出。

如果弹出的符号不是对应的开放符号,则报错。在文件尾,如果栈非空则报错。


后缀表达式:

后缀表达式其求值过程:计算问题最容易的方法是使用一个栈,当见到一个数时就把它推入栈中,在遇到一个运算符时该运算符就从该栈中

弹出两个数,将所得结果推入栈中。


函数调用

检测平衡符号的算法提供了一种实现函数调用的方法。当调用一个新函数时,主调例程的所有局部变量需要系统存储起来,否则被调用的新函数将会

覆盖调用例程的变量。该主调例程的当前位置必须要存储,以便在新函数运行完后知道向哪转移。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值