数据结构与算法(二)-线性表

一、总体框架图(1)

在这里插入图片描述

二、顺序表、链表

顺序表vs链表

在这里插入图片描述

头指针vs头结点

在这里插入图片描述

带头结点vs不带头结点

在这里插入图片描述

三、总体框架图(2)

在这里插入图片描述

四、栈和队列

栈vs队列

在这里插入图片描述

共享栈

在这里插入图片描述

区分循环队列是队空还是队满

在这里插入图片描述

栈在括号匹配中的算法思想

(1) 出现的凡是“左括号”,则进栈;
(2) 出现的是"右括号",首先检查栈是否空?若栈空,则表明该"右括号"多余,否则和栈顶元素比较?若相匹配,则栈顶"左括号出栈,否则表明不匹配
(3) 表达式检验结束时,若栈空,则表明表达式中匹配正确,否则表明“左括号"有余

栈在通过后缀表达式求值的算法思想

在这里插入图片描述

栈在递归中的应用

在这里插入图片描述

队列在层次遍历的作用

在信息处理中有一大类问题需要逐层或逐行处理。这类问题的解決方法往往是在处理当前层或当前行时就对下一层或下一行做预处理,把处理顺序安排好,待当前层或当前行处理完毕,就可以处理下一层或下一行,使用队列是为了保存下一步的处理顺序。下面用二叉树层次遍历的例子,说明队列的应用。
在这里插入图片描述

队列在计算机系统中的应用

队列在计算机系统中的应用非常广泛,以下仅从两个方面来简述队列在计算机系统中的作用:第一个方面是解决主机与外部设备之间速度不匹配的问题,第二个方面是解决由多用户引起的资源竞争问题。
(1)对于第一个方面,仅以主机和打印机之间速度不匹配的问题为例做简要说明。主机输出数据给打印机打印,输出数据的速度比打印数据的速度要快得多,由于速度不匹配,若直接把输出的数据送给打印机打印显然是不行的。解决的方法是设置一个打印数据缓冲区,主机把要打印输出的数据依次写入这个缓冲区,写满后就暂停输出,转去做其他的事情。打印机就从缓冲区中按照先进先出的原则依次取出数据并打印,打印完后再向主机发出请求。主机接到请求后再向缓冲区写入打印数据。这样做既保证了打印数据的正确,又使主机提高了效率。由此可见,打印数据缓冲区中所存储的数据就是一个队列。
(2)对于第二个方面,CPU(即中央处理器,它包括运算器和控制器)资源的竞争就是一个典型的例子。在一个带有多终端的计算机系统上,有多个用户需要CPU 各自运行自己的程序,它们分别通过各自的终端向操作系统提出占用CPU 的请求。(操作系统通常按照每个请求在时间上的先后顺序,把它们排成一个队列,每次把CPU 分配给队首请求的用户使用。)当相应的程序运行结束或用完规定的时间间隔后,令其出队,再把CPU 分配给新的队首请求的用户使用。这样既能满足每个用户的请求,又使CPU 能够正常运行。

矩阵的压缩存储

在这里插入图片描述

广义表

在这里插入图片描述

数组

数组是存放在连续内存空间上的相同类型数据的集合。
数组可以方便的通过下标索引的方式获取到下标下对应的数据。
数组的元素是不能删的,只能覆盖。

-数组下标都是从0开始
-数组内存空间的地址是连续的,删除或增添元素时,要移动其他元素的地址。

1.顺序存储 - 高下标优先
2.随机访问 - 低下标优先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值