计算机导论第六章
计算机导论-第6章 数据结构

单击此处添课程名 ⑵线性结构。该结构的数据元素之间存在着一对一的关系。
⑶树型结构。该结构的数据元素之间存在着一对多的关系。
⑷图型结构。该结构的数据元素之间存在着多对多的关系, 图形结构也称作网状结构。
具有特殊的意义,称为栈顶。相应地,表尾 称为栈底。不含任何元素的栈称为空栈。
2. 栈的数学性质
假设一个栈S中的元素为an,an-1,..,a1,则 称a1为栈底元素,an为栈顶元 素。栈中的
元 时素 候按 ,单出a ,a栈击2,的..此,元an素-处1,都an添是的栈次课顶序程元进素栈名。。换在句任话何
第六章 数单据击结此构处添课程名
第6章 数据结构
• 数据结构是计算机软件和计算机应用专业的 核心课程之一,对于学习计算机专业的其他 课程,如操作系统、编译原理、数据库管理
系的统 。、 数软 据单件 结击工 构程主此、要处人研工究添智数能据课等表程都示是 与名十 存储分的有方益
法、抽象的逻辑结构及其上定义的各种基本 操作。数据的逻辑结构常常采用数学描述的 抽象符号和有关的理论。如使用串、表、数 组、图等结构和理论来表示数据在存储时的 逻辑结构,研究这些结构上定义的各种操作 。
本章内容
• 6.1 数据结构的概念 • 6.2 几种典型的数据结构 • 6.3 查找
• 6.4 单排序击此处添课程名
6.1 数据结构的概念
• 在系统地学习数据结构知识之前,先对一 些与数据结构相关的基本概念和术语赋予 确切的含义。
• 数 算机据单识(别D击at、a此)存是储处信和添息加的工课载处体理程,。名它它能是够计被算计机 程序加工的原料,应用程序处理各种各样 的数据。
计算机导论课件

• 用机器指令编写的程序称为机器语言程 序,或称为目标程序,这是计算机能够 直接执行的程序。
• 机器语言难以阅读和理解,编写和修改 都比较困难,而且通用性较差。
计算机科学导论
6
汇编语言
• 汇编语言也称符号语言。 • 指令助记符是指令英文名称的缩写,容易记忆。 • 所谓汇编语言,就是采用字母、数字和符号来
代替由一个个0和1构成的指令操作码、寄存器、 数据和存储地址等,并在程序中用它们代替二 进制编码数,这样编写出来的程序就称为符号 语言程序或汇编语言程序。
计算机科学导论
7
• 大多数情况下,一条汇编指令直接对应 一条机器指令,少数对应几条机器指令。
• 因此,在很多对时间要求比较高的系统,如某 些实时控制系统或者大型计算机控制系统中, 低级语言,主要是汇编语言,仍然得到了一定 的应用。
计算机科学导论
17
6.1.3 高级语言的基本内容
• 高级程序设计语言依赖于各自特定的语句和语 法。一条一条的语句是构成源程序的基本单位。 高级语言的一条语句被编译或解释时往往会对 应多条机器指令。
第六章 程序设计与 算法分析
计算机科学导论
1
本章要点
◆初步了解程序设计的基础知识 ◆掌握结构化程序设计和面向对象程序设计的基本方
法 ◆掌握数据结构中的基本数据类型及其实现 ◆掌握程序设计算法的基本思想及几种经典的算法 ◆了解编译原理的基本知识
计算机科学导论
2
6.1 程序设计基础
6.1.1 程序的概念
• 实现这种翻译功能的特殊程序称为汇编语言翻 译程序、汇编程序或汇编器。程序员手工编写 的程序统称为源程序,用汇编语言编写的源程 序称为汇编语言源程序,汇编程序将源程序翻 译得到的机器语言程序称为目标程序,翻译的 过程称为汇编。
计算机导论课件

2013-8-13
软件学院 张奕韬
24
6.2
程序
程序顺序 顺序结构 选择结构 循环结构
6.2.1
6.2.2
6.2.3 6.2.4
2013-8-13
软件学院 张奕韬
25
6.2
程序
问题描述和算法通常写在程序说明书
(例如软 件开发文件中的《详细设计说明书》) 中,它 们是程序设计必不可少的蓝图。 完成程序说明书后,就可以编写程序了。 编写程序就是用某种程序设计语言把算法程序 化,编写程序的人称为程序员。对于大部分程 序设计语言来说,编程就是输入命令;有些程 序设计语言只需要选择对象和属性或编写对象 的脚本即可。
2013-8-13 软件学院 张奕韬 27
一些算法给出的执行顺序和程序中写的不 同,例如在某些情况下跳过一些指令或重 复执行某些指令等。 控制结构:控制着程序执行的顺序。一般 有三种结构形式即顺序控制、选择控制和 循环控制。
2013-8-13
软件学院 张奕韬
28
6.2.2
顺序结构
顺序控制结构能改变计算机执行的顺序,使得
一些能用来解决问题的要素。一个表达清晰的 问题描述应该具备以下三个特征: 1) 能说明描述问题范畴的任何假设。 2) 罗列出已知的所有条件。 3) 具体说明需要解决什么问题。
2013-8-13
软件学院 张奕韬
6
假设:为了方便设计而假定地认为是正确的 陈述。 已知信息:要计算机帮助解决问题时提供给 它的信息。已知信息在问题描述中经常用 “已知”来给出。 在说明已知条件后,应该说明问题解决后该 如何做决定,也就是想让程序输出什么信息。
2013-8-13
计算机科学导论 第六章 计算机网络

传输层
网络层提供主机(点)到主机(点)的连接 功能:负责客户端和服务器进程之间的消息 的逻辑传输,是端(端口)到端(端口)的连 接 server
client
网络层只是找到网络上的主机,而传输层则是 用户如何通过客户机上的不同应用程序来实现对服 找到要访问的进程(程序)。 务器不同资源的访问,如迅雷下载服务器资源,浏 览公司网站或读取公司数据。
–总线结构的优点
• 结构简单/布线容易/可靠性高/易于扩充。 • 节省连接线/连接成本较低。 • 早期的同轴电缆局域网多采用这种结构。
–总线结构的缺点
• 故障诊断相对困难。 • 总线故障会引起整个网络的瘫痪。 • 同一时刻只能有一个结点发送数据,存在总线的使用 权争用。
8
• 环形结构
–连接方式
• 所有站点连接在一个封闭的环路中。 • 一个站点发出的数据要通过所有的站点,最后回到 起始站点。 • 某个站点接收到数据,要把此数据的目标地址与本 站点地址进行比较,相同时才接收该数据。
网络层
定义了基于IP协议的逻辑地址 功能:负责数据包从源主机到目的主机的发 送,并选择最佳路径
连接外网使用的路由器属于网络层
网络层通过IP地址对不同主机进行寻址。
IP地址
Internet是由不同物理网络互连而成,不同网 络之间实现计算机的相互通信必须有相应的地 址标识,这个地址标识称为IP地址。IP地址提 供统一的地址格式即由32Bit位组成。
域名系统
域名系统 用具有直观意义的字符串来表示地址。 域名实际就是名字,采用层次结构,按 地理域或机构域进行分层。 格式: 主机名.三级域名.二级域名.顶级域名 顶级域名一般为机构性域名和地理性 域名
因特网的域名举例:
• 中央电视台向因特网提供万维网服务的计算 机的域名是:
Ch6(计算机导论)

单道程序和多道程序结构
内存 操作系统
程序和 数据
单道程序
内存 操作系统
程序1 程序2 程序3 程序4 程序5 程序6 多道程序
多道程序 非交换技术
交换技术
分区调度
分页调度
请求分页调度
请求分段调度
程序A 页1 页2 页3 页4
程序B 页1
影像文件——实时音频、视频多媒体文件
AVI文件 QuickTime文件 MPEG文件 RealVideo文件
Back Overview
按文件存取方式分
顺序存取的文件 随机存取的文件
– 索引(Index) – 哈希(Hash) – 二分法
按关键字存取的文件
Unix和MS系统都是采用顺序存取和随机存 取两种方法
存储技术
– 程序运行时,把程序从外存(如磁盘)调入内存 – 在内存中运行,运行所产生的数据临时存放在内存中 – 程序运行结束,数据被保存到外存上
ALU Registors
逻地辑址
Controller Program Counter
MMU
控制 信号
磁盘
地内址存制
索引文件
索引文件是为了检索需要建立的文件 索引文件存取数据的过程为:
– 将索引文件调入计算机主存; – 根据关键字在索引文件中查找目标存储地址; – 根据所检索到的存储地址到文件系统或数据文
件中查找; – 将查找到的结果返回给用户
索引文件的逻辑示意图
索引文件 关键字 地址
文件系统(大量数据)
哈希文件
– 把有关文件的文件控制块进行排序并存放到一个表中, 这个表就叫做文件目录
计算机导论第6章ppt

第6章 操作系统简介
1. 计算机的启动 2. 认识操作系统
3. 操作系统对硬件资源管理
4. 操作系统对应用程序提供较安全可靠的服务
5. 操作系统对多运行环境的管理
6. 文件系统
Dr. 沙行勉
2015/12/9
1
计算机科学导论——以Python为舟
第1节 计算机的启动
这三个阶段主要由BIOS(Basic Input Output System)来完成的。 BIOS是一组程序,包括基本输入输出程序、系统设置信息、开机后
自检程序和系统自启动程序。
Dr. 沙行勉
2015/12/9 3
计算机科学导论——以Python为舟
பைடு நூலகம்
1.1 启动自检阶段
•
• •
按一下电源按钮,计算机就进入启
3.1 操作系统对I/O设备管理
从中断类型码连接到要操作系统要执行的服务程序就要利用一个重要的 表格,中断向量表(Interrupt vector table)。中断类型码是中断向量表的索 引,所以n种中断类型码就代表在中断向量表有n个行。每一行存着指向相关 服务程序的起始位置,这个服务程序叫做中断服务程序(Interrupt servce routine),每一个中断类型码都有一个自己的中断服务程序。当CPU收到了 中断类型码,例如是9,就会自动到中断向量表第9行,找到它的中断服务程 序的起始位置,然后跳到此程序去执行。
Dr. 沙行勉
2015/12/9
16
计算机科学导论——以Python为舟
3.1 操作系统对I/O设备管理
•随着计算机相关领域的发展,I/O设备的种类繁多,操作系 统如何识别不同的I/O设备?
计算机导论试卷第6章 课后习题及参考答案
第6章课后习题及参考答案一、选择题1.计算机网络最突出的特点是()。
A、资源共享B、运算精度高C、运算速度快D、内存容量大2.区分局域网(LAN)和广域网(W AN)的依据是()。
A、网络用户B、传输协议C、联网设备D、联网范围3.学校的校园网络属于()。
A、局域网B、广域网C、城域网备D、电话网4.Internet 起源于()。
A、美国B、英国C、德国D、澳大利亚5.OSI模型和TCP/IP协议体系分别分成几层()。
A、7 和 7B、4和 7C、7 和 4D、4 和 46.国际标准化组织的英文缩写是()。
A、OSIB、ISOC、SOSD、ANSI7.当你在网上下载软件时,你享受的网络服务类型是()。
A、文件传输B、远程登陆C、信息浏览D、即时短信8.TCP/IP的网络层含有四个重要的协议,分别为()。
A、IP,ICMP,ARP,UDPB、TCP,ICMP,UDP,ARPC、IP,ICMP,ARP,RARPD、UDP,IP,ICMP,RARP9.目前使用的IPV4地址由多少个字节组成()。
A、2B、4C、8D、16 10.Internet 主要的互联设备是()。
A、集线器B、路由器C、调制解调器D、以太网交换机11.下列地址中与“域名”有一一对应关系的是()。
A、E-mail地址B、网页地址C、IP地址D、物理地址12.DNS的主要功能是()。
A、将IP地址解析为物理地址B、将物理地址解析为IP地址C、将域名解析为IP地址D、将IP地址解析为主机域名13.地址栏中输入的://zjhk.school中,zjhk.school是一个()。
A、域名B、文件C、邮箱D、国家14.下列四项中主要用于在Internet上交流信息的是()。
A、DOSB、WordC、ExcelD、E-mail15.以下操作系统中,不属于网络操作系统的是()。
A、Windows NTB、Windows 2003 ServerC、Windows XPD、Linux 16.是一种()。
计算机导论csi-6-本要点
4
一、流程图符号(续)
基本符号:
表示意义:
特定处理:另外再详细表示的操作
准备(动作)
符
(流程的接点)连接符
注解
5
1、流程图符号(续)
起始 动作1
动作2
动作3
动作4
结束
并行符号和并行动作示例
6
1、流程图符号(续)
.....
.....
省略符号使用示例
7
2、操作表示
原则:具体或笼统的程度和算法的描述目标相一致
13
三类典型的重复结构(1)
当型
假
控制条件B
真 S
While <B> S
14
三类典型的重复结构(2)
S
真
控制条件B
假
S While <B>
直到型
15
三类典型的重复结构(3)
初值→i I : 终值 超过
未超过
S i+步长→i
初值→i
当i未超过终值
S i+步长→i
步长型
16
6.3.2、结构化定理 1.结构化定理
• 在算法层次上会有5个方面的工作
– 设计算法 – 表示算法 – 确认算法 – 分析算法 – 验证算法
3
6.2
1、流程图符号
基本符号: 起/始
算法表示手段
表示意义:
算法的起点和终点
数据/动作
数据/数据的输入输出动作
动作
处理动作
条件
循环条件 循环条件
(逻辑)判断
流线、(动作)控制流方向
循环、上/下界
第六章 数据加工表示方法
6.1 数据加工表达层次 6.2 算法表示手段 6. 3 结构化设计 6. 4 算法示例 6. 5 工程化开发方法
计算机导论(第5版 方英兰)第6章 计算机系统的软件
办公软件套件
一类日常办公用的软件,包括字处理软件、电子表格处理软件、演示文稿制作软件、个 人数据库和个人信息管理软件等。 常用的办公软件套件有Microsoft公司的Office,Lotus公司的SmarTsuits,金山公司 的WPS等。
金山的功臣,WPS之父
为了理想不求回报,淡泊名利、精益求精的大国工匠精神
第6章 计算机系统的软件
6.1 计算机软件概述
01 02 03 04
什么是软件
软件的分类
常用软件简介
计算机系统 的组成
6.1 计算机软件概述 教学 引入
在前面,我们学习了计算机的内部组成,那么是谁控制这些硬件让 它为我们服务?
6.1 计算机软件概述
6.1.1 什么是软件
程序作为商品以有形介质为载体进行交易,称做软件。即软件是指 为运行、维护、管理及应用计算机所编制的所有程序及其文档资料 的总和。 软件的特性:
程序开发集成环境
编程语言一般以一个集成环境的形式出现的,在这个集成环境中,包含了语言编辑器、 调试工具、编译工具、运行工具、图标图像制作工具等。 在Windows环境下,常用的应用程序开发环境有Microsoft的Visual Studio开发套件, 其中包括Visual C++,Visual C#,Visual Basic,Visual F# 等开发工具。
6.1 计算机软件概述
6.1.3 常用软件简介
多媒体处理软件
在CPU(如Intel的MMX,AMD K6,PⅢ,PⅣ等)一级已提供多媒体指令,实现了 对多媒体的直接支持,因而使多媒体处理软件成为应用软件中的一大类别。 多媒体处理软件主要包括图形处理、图像处理、动画制作、音频和视频处理、桌面排版 软件等。
6计算机科学导论第六章-计算机网络和因特网
6.2.8 域名系统
域名系统(DNS,Domain Name System,53)是为了帮助其 他应用程序而设计的。为了确认一个实体, TCP/IP使用IP地 址定义某主机和网络之间的连接。但是数字化的地址难以记 忆,因此网络需要一个名字到地址的映射系统来解决此问题。 DNS是一个作为域名和IP相互映射的一个分布式数据库。 全世界有13台根域名服务器。由ICANN管理。
25
6.3.2 传输层协议
用户数据报协议
UDP(User Data Protocol)是面向事务的不可靠的无连接传 输协议。提供进程间通信。 用户数据报,UDP数据包,有一个固定大小为8字节的头,存 储在总长为65535字节的IP数据报中。 UDP耗费系统资源较少,可能丢包,不保证数据的顺序。
26
7
协议分层的原则
(1)如果想达到双向通信,我们需要保证每一个协议层都可 以进行两个对立且方向相反的工作。 (2)在两个站点中每一层的两个对象必须完全相同。
逻辑连接
Figure 6.6 同位体协议层之间的逻辑连接
8
OSI参考模型
开放式系统互联( OSI ,Open System Interconnect)。国际 标准化组织(ISO)制定了OSI模型,该模型定义了不同计算 机互联的标准,是设计和描述计算机网络通信的基本框架。
第 6章
计算机网络和因特网
(Computer Network & Internet)
1
教学目标
通过本章的学习,同学们应该能够:
描述局域网和广域网(LAN和WAN). 区分因特网和互联网. 描述作为因特网网络模型的TCP/IP协议族. 定义TCP/IP协议族中的各层以及他们的关系. 从应用层面描述一些应用. 描述网络层协议提供的服务. 描述传输层协议提供的服务. 描述数据链路层使用的不同协议. 描述物理层的责任. 描述在计算机网络中使用的不同传输介质.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章数据结构数据结构是一门重要的计算机专业的基础课。
数据结构作为一门独立课程,在国外是从1968年开始设立,我国从20世纪80年代初才开始正式开设数据结构课程。
它主要研究的内容有计算机加工对象的逻辑结构、在计算机中的表示形式以及各种针对它们的操作。
数据结构是哦学习操作系统、数据库管理、编辑原理等后续课程的基础。
6.1 概述6.1.1数据结构课程的地位1968年美国D.E.Knuth教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》较为系统的阐述了数据的逻辑结构和储存结构及操作。
从二十世纪六十年代到二十世纪七十年代,出现了大型程序,软件也相对独立,结构程序设计的主要内容越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,并设计一种好的算法。
数据结构课程较系统地介绍了软件设计中常用数据结构以及相应相应的存储结构和算法,系统介绍了常用的查找和排序技术,并对个中结构与技术进行分析和比较,内容非常丰富。
数据结构在计算机科学中是一门综合性的专业基础课。
数据结构涉及到多方面的知识,如计算机硬件范围的存储装置和存取方法,软件范围中的文件系统、数据的动态管理、信息检索,学范围的集合、逻辑的知识,有一些综合性的知识,数据类型、程序设计方法、数据表示、数据运算、数据存取等,因此数据结构是介于数学、计算机硬件计算机软件三者之间的一门核心课程。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序,操作系统、数据库及其他系统程序和大型应用程序的重要基础。
6.1.2基本概念和术语随着计算机的发展和及其应用范围的不断扩大,计算机所处理的数据的数量在不断扩大,并且所处理的数据的形式也越来越多样。
计算机所处理的数据已不再是单纯的数值数据,而更多的是非数值数据。
这些需要处理的数据并不是杂乱无章的,他们有内在的联系,只有弄清楚它们之间的本质联系,才能使用计算机对大量的数据进行有效的处理。
例如,某学校学生的住宿情况信息如表6-1所示。
表6.-1 学生住宿情况信息表可以看出表6-1中的数据,每一行是一个用户的有关信息,它由序号、姓名、电话号码和寝室详细地址等项组成,把序号、姓名、电话号码等项称为基本相,是有独立意义的最小标识单位,而把寝室详细地址称为组合项,组合箱是有一个或多个基本项组合组成的,是有独立意识的标识单位,把这里的每一项称为一个结点,每一个项称为一个字段,那么,结点是由若干个字段构成的,对于能唯一标识一个结点的字段或几个字段的组合,如这里的“序号”字段,称之为关键码。
当药使用计算机处理这个信息表中的数据时,必须弄清楚下面3个问题。
1. 数据的逻辑结构表6-1中的数据数据之间的内在联系是:在这些数据中,有且只有一个节点是表首节点,他前面没有其他节点,后面一个和它相邻的节点;有且只有一个节点是表尾结点,它后面没有其他节点,前面有一个和他相同的节点;除了这两个节点之外,表中所有其他的节点都有且只有一个节点,页有且只有一个和他相邻的位于它之后的一个节点,这些就是学生住宿情况的逻辑结构。
2.数据的存储结构将表6-1中的所以结点存入计算机时,就必须考虑存储结构,使用C语言进行设计时,常见的方式是用一个结构数组来存储整个信息表,每一个数组元素对应于信息表中一个结点。
信息表中相邻的结点,对应的数组元素也是相邻的,或者说在这中存储方式下,逻辑相邻的结点就必须物理相邻。
这是一种称为顺序存储的方式,当然,还有其他的存储方式。
数据在计算机中的存储方式称为存储结构。
3数据的运算集合对数据的处理必定涉及到相关的运算,在上述信息表中,可以有删除一个结点、增加一个结点等操作。
应该明确指明这些操作的含义。
比如删除操作,是删除序号为“00004”的结点还是删除姓名为“王洪涛”的结点是应该明确定义的,如果需要,可以定义两个不同的删除操作,为一批数据定义的所有运算(或称为操作)构成一个运算(操作)集合。
对于一批待处理的数据,只有分析清楚上面三方面的问题,才能进行有效的处理。
一个数据结构就是指按一定的逻辑结构组成的一批数据,使用某种存储及认购将这批数据存于与计算机中,并在这些数据上定义了一个运算集合。
在陶云一个数据结构时,数据结构所含的三方面缺一不可,即只有给定一批数据的逻辑结构和它们在计算机中的存储结构,并且定义了数据运算集合,才能确定一个数据结构。
例如,在6.2.2节中将要介绍的栈和队列,它们的逻辑结构是一样的,它们都可以用同样地存储结构,但是由于它们多定义的运算性质不同,而成为两种不同的数据结构。
常见的数据结构是有线性结构、树形结构和图形结构。
6.2 几种经典的数据结构6.2.1 线性表线性表是一种最简单的、最常见的数据结构。
1.线性的逻辑结构线性表(Linear List)是由n (n≥0)个类型相同的数据元素a1、a2、…、a n组成的有限序列,记作(a1,a2,…,a i-1,a i,a i+1,…,an)。
这里n为线性表的长度,n=0时称为空表,,数据元素ai(1≤i≤n)只是一个抽象的符号,其具体含义在不同情况下可以不同。
此外,线性表中相邻的数据元素之间存在着次序关系,即对于非空的线性表(a1,a2,…,a i-1,a i,a i+1,…,an),表中a i-1领先于a i,称a i-1是a i的直接前驱,而称ai是a i-1的直接后继。
除了第一个元素a1外,每个元素a i有且仅有一个被称为其直接前驱的结点a i-1,除了最后一个元素a n外,每个元素a i有且仅有一个被称为其直接后继的结点a i+1。
例如:英文字母表(A,B,…,Z)就是一个简单的线性表,表中的每一个英文字母是一个数据元素,又如表6-1所示,表中的每个结点都是一个数据元素。
2.线性表的存储结构(1)线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。
采用顺序存储结构的线性表通常称为顺序表。
如图6-1所示,假设线性表中有n 个元素,每个元素占L 个单元,第一个元素的地址为Loc(a 1),则可以通过如下公式计算出第i 个元素的地址:Loc(a i )=loc(a 1)+(i-1)L存储地址 内存单元Loc(a i )Loc(a 1)+(2-1)L…Loc(a 1)+(i-1)L …Loc(a 1)+(n-1)L图6-1 线性表的顺序存储示意图显然,只要知道顺序表的首地址(第一个元素的地址)和每个数据元素所占地址单元的个数,就可以求出第i 个数据元素的地址,这也是在顺序表中进行存取数据元素时的特点。
(2)链式存储机导购通常将采用链式存储结构的线性表称为链表。
链表是用一组任意的存储单元来存放线性表的数据元素,这组存储单元可以是连续的,也可以是非连续的,甚至是零散分布在内存的任何位置上。
从实现角度看,链表可分为动态链表和静态链表;从链接方式的角度看,链表可分为单链表、循环链表和双链表。
这里以单链表为例说明线性表的链式存储结构。
为了正确地表示数据元素间的逻辑关系,必须在存储线性表的每个数据元素值的同时,存储指示其后继结点的地址(或位置)信息,这两部分信息组成的存储映像叫做结点(Node ),如图6-2所示。
它包括两个域:数据域用来存储数据元素的值;指针域用来存储数据元素的直接后继的地址(或位置)。
链表正是通过每个结点的指针域将线性表的n 个数据元素按其逻辑顺序链接在一起。
由于链表的每个结点只有一个指针域,故将这种链表又称为单链表。
图6-2 单链表的结点结构由于单链表中每个结点的存储地址是存放在其前驱结点的指针域中的,而第一个结点无前驱,所以应设一个头指针H 指向第一个结点。
同时,由于表中最后一个结点没有直接后继,则指定线性表中最后一个结点的指针域为“空”(Null )。
这样整个链表的存取必须从头指针开始,如图6-3所示。
H…图6-3 带头结点单链表储存示意图(3)线性表的基本运算①Initlist(L): 将线性表L初始化为空表。
②ListLength(L): 求线性表L的表长。
③Locate(L,e): 在表L中检索值为e的元素,并返回该结点在L中的位置。
④GetData(L,i): 取线性表L中第i个元素的值。
⑤InsertList(L,i,e): 在L中第i个位置之前插入新的数据元素e,L的长度加1。
(1≤i≤ListLength(L)+1 )⑥DeleteList(L,i): 删除L的第i个数据元素,L的长度减1。
(1≤i≤ListLength(L) )6.2.2 栈和队列栈和队列是两类特殊线性表,它们的逻辑结构和存储结构与线性表相同,其特殊性在于限制了它们的插入和删除等运算的位置。
堆栈和队列在各种类型的软件系统中应用广泛。
堆栈技术被广泛应用于编译软件和程序设计中,在操作系统和事务管理中广泛应用了队列技术。
1.栈栈作为一种限定性线性表,是将线性表的插入和删除运算限制为仅在表的一端进行,通常将表中允许进行插入、删除操作的一端称为栈顶(Top),因此栈顶的当前位置是动态变化的,它由一个称为栈顶指针的位置指示器指示。
同时表的另一端被称为栈底(Botton)。
当栈中没有元素时称为空栈。
栈的插入操作被称为近栈或入栈,删除操作被称为出栈或退栈。
根据上述定义,每次近栈的元素都被放在原栈顶元素之上而成为新的栈顶,而每次出栈的总是当前栈中“最新”的元素。
即最后近栈的元素。
如图6-4所示的栈中,元素是以a1、a2、a3、…、a n的顺序近栈的,而退栈的顺序却是a n、…、a3、a2、a1先出的原则进行的。
因此,栈又称为后进先出的线性表,简称为LIFO表。
栈的基本操作如下:①LnitStack(S): 将S初始化为空栈。
②IsEmpty(S): 判栈空。
若S为空栈,则返回TRUE,否则返回FALSE③IsFull(S): 判栈满。
若S栈已满,则返回TRUE,否则返回FALSE。
④Push(S,x): 进栈。
在S的顶部(也称为压入)元素x;若S栈未满,将x插入栈顶位置,若栈已满,则返回FALSE,表示操作失败,否则返回TRUE。
⑤Pop(S,x): 出栈。
删除(也称为弹出)栈S的顶部元素,并用x带回该值;若栈为空,则返回FALSE,表示操作失败,否则返回TRUE。
2.队列队列(Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(First In First Out,FIFO)的特性。
这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。
在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。