数据结构CH2
数据结构第二章课后答案

数据结构第二章课后答案数据结构第二章课后答案1. 线性表1.1 数组实现线性表Q1. 请说明线性表的定义,并结合数组实现线性表的特点进行解释。
线性表是由n(n≥0)个数据元素构成的有序序列,其中n表示线性表的长度。
数组实现线性表的特点是使用一组具有相同数据类型的连续存储空间存储线性表中的元素,通过下标访问和操作元素。
A1. 线性表的定义指出,线性表是由若干个数据元素组成的有序序列。
具体地,在数组实现线性表中,我们将元素存储在一组连续的内存空间中,通过下标访问和操作元素。
由于数组的存储空间具有连续性,这样的实现方式可以在O(1)的时间复杂度下进行元素的访问和修改操作。
1.2 链表实现线性表Q2. 请说明链表实现线性表的特点,并与数组实现进行比较。
链表实现线性表的特点是通过指针将线性表中的元素按照节点的形式连接起来,每个节点包含了存储的元素和指向下一个节点的指针。
与数组实现相比,链表的插入和删除操作更为高效,但是访问某个位置的元素需要从头开始遍历,时间复杂度较大。
A2. 链表实现线性表的特点是通过使用节点和指针将线性表中的元素连接起来。
每个节点中包含了一个存储的元素和指向下一个节点的指针。
链表的插入和删除操作的时间复杂度为O(1),因为只需要改变指针的指向即可。
但是,访问某个位置的元素需要从头开始遍历链表,所以时间复杂度为O(n)。
2. 栈和队列2.1 栈的定义和基本操作Q3. 请给出栈的定义和基本操作。
栈是一种特殊的线性表,它只能在表的一端进行插入和删除操作,该端称为栈顶。
栈的基本操作包括入栈(push)和出栈(pop),分别用于将元素压入栈和将栈顶元素弹出。
A3. 栈是一种特殊的线性表,它只能在表的一端进行插入和删除操作。
这个特定的一端称为栈顶,而另一端称为栈底。
栈的基本操作包括入栈(push)和出栈(pop)。
入栈操作将一个元素压入栈顶,出栈操作将栈顶元素弹出。
2.2 队列的定义和基本操作Q4. 请给出队列的定义和基本操作。
数据结构各章概要

数据结构各章概要数据结构是计算机科学中非常重要的一个学科,其主要研究各种数据的组织方式和操作方法。
善于运用合适的数据结构可以提高算法的效率,并优化程序的性能。
本文将对数据结构的各个章节进行概要介绍,帮助读者了解不同章节的主要内容和应用。
第一章:引论在引论章节,我们将引入数据结构的基本概念和术语,例如什么是数据、数据项、数据对象等等。
同时,还将介绍数据结构的分类和基本操作,如搜索、遍历、插入、删除和排序。
这些基础知识是后续章节的基础。
第二章:线性表线性表是数据结构中最简单、最基本的一种结构。
其特点是数据元素之间的前驱和后继关系非常明确。
线性表可以用数组和链表两种方式实现。
在本章节中,我们将分别介绍顺序表和链表的实现原理、插入、删除、合并以及应用场景。
第三章:栈和队列栈和队列是两种特殊的线性表结构,它们对数据的访问具有限制性。
栈具有“先进后出”的特点,而队列则具有“先进先出”的特点。
在本章节中,我们将介绍栈和队列的实现方式以及常见的应用场景,如递归、表达式求值、广度优先搜索等。
第四章:串串是由零个或多个字符组成的有限序列,其长度可以为零。
在本章节中,我们将介绍串的定义和操作,包括字符串的模式匹配、模式识别和编辑操作。
串的相关算法在文本处理、计算机网络等领域具有广泛的应用。
第五章:数组和广义表数组是一种在内存中以连续方式存储的数据结构,它具有高效的随机访问特性。
广义表是线性表的一种扩展,可以包含表结构、原子结构以及其他广义表。
本章节将介绍数组和广义表的定义、操作和应用。
第六章:树树是一种非线性的数据结构,具有分层次、递归和层次遍历等特点。
在本章节中,我们将介绍树的基本概念、二叉树、树的遍历算法、平衡树以及树的应用,如编译器中的语法树、文件系统的目录结构等。
第七章:图图是一种复杂的非线性数据结构,由顶点集合和边集合组成。
在本章节中,我们将介绍图的各种表示方式,图的遍历算法、最短路径算法以及常用的图算法,如最小生成树算法和拓扑排序。
数据结构第二章:线性表

实现:可用C 实现:可用C语言的一维数组实现
6
V数组下标 0 1
内存 a1 a2
元素序号 1 2
typedef int DATATYPE; #define M 1000 DATATYPE data[M]; 例 typedef struct card { int num; char name[20]; char author[10]; char publisher[30]; float price; }DATATYPE; DATATYPE library[M];
4
{加工型操作 加工型操作} 加工型操作
ClearList( &L ) 初始条件:线性表 L 已存在。 操作结果:将 L 重置为空表。 PutElem( &L, i, &e ) 初始条件:线性表L已存在,1≤i≤LengthList(L)。 操作结果:L 中第 i 个元素赋值同 e 的值 ListInsert( &L, i, e ) 初始条件:线性表 L 已存在,1≤i≤LengthList(L)+1。 操作结果:在 L 的第 i 个元素之前插入新的元素 e,L 的长度增1。 ListDelete( &L, i, &e ) 初始条件:线性表 L 已存在且非空,1≤i≤LengthList(L)。 操作结果:删除 L 的第 i 个元素,并用 e 返回其值,L 的长度减1。 }ADT LIST
3
PriorElem( PriorElem L, cur_e, &pre_e ) 初始条件:线性表 L 已存在。 操作结果:若 cur_e 是 L 中的数据元素,则用 pre_e 返回 它的前驱,否则操作失败,pre_e 无定义。 NextElem( NextElem L, cur_e, &next_e ) 初始条件:线性表 L 已存在。 操作结果:若 cur_e 是 L 中的数据元素,则用 next_e 返 回它的后继,否则操作失败,next_e 无定义。 GetElem( GetElem L, i, &e ) 初始条件:线性表 L 已存在,1≤i≤LengthList(L)。 操作结果:用 e 返回 L 中第 i 个元素的值。 LocateElem( LocateElem L, e, compare( ) ) 初始条件:线性表 L 已存在,compare( ) 是元素判定函数。 操作结果:返回 L 中第1个与 e 满足关系 compare( ) 的元 素的位序。若这样的元素不存在,则返回值为0。 ListTraverse(L, visit( )) ListTraverse 初始条件:线性表 L 已存在,visit( ) 为元素的访问函数。 操作结果:依次对 L 的每个元素调用函数 visit( )。 一旦 visit( ) 失败,则操作失败。
离散数学ch2.二元关系(5、6、7节)

VS
详细描述
关系的对称差运算可以用符号表示为 R△S,其中 R 和 S 是两个关系。它包括 属于 R 但不属于 S,以及属于 S 但不属 于 R 的所有有序对。如果 (a, b) 在 R△S 中,那么 (a, b) 或者只属于 R,或者只属 于 S。
04
CATALOGUE
关系的闭包
闭包的定义
1 2
关系的交运算可以用符号表示为 R ∩ S,其中 R 和 S 是两个关系 。它包括同时属于 R 和 S 的所有 有序对。如果 (a, b) 在 R ∩ S 中 ,那么 (a, b) 同时是 R 和 S 的差是一种集合差集操作,它从第一个 关系中去除与第二个关系共有的元素。
中可以推导出的新事实。
数据完整性
03
在数据库设计中,闭包的概念用于确保数据的完整性和准确性
,防止出现冗余和不一致的情况。
05
CATALOGUE
关系的类型
函数关系
总结词
函数关系是一种特殊的二元关系,它满足每 个自变量都有唯一的因变量与之对应。
详细描述
在函数关系中,对于定义域中的每一个元素 ,在值域中都有唯一一个元素与之对应。这 种关系具有明确性、确定性和无重复性。常 见的函数关系有数学函数、映射函数等。
离散数学ch2.二元 关系(5、6、7节)
contents
目录
• 引言 • 二元关系的性质 • 关系的运算 • 关系的闭包 • 关系的类型 • 关系在数据库中的应用 • 关系在人工智能中的应用
01
CATALOGUE
引言
定义与概念
定义
二元关系是集合论中的一个基本概念 ,它描述了两个元素之间的联系。
在设计关系型数据库时,需要考虑数据结构、数据完整性、数据冗余和数 据安全性等方面。
数据结构(C语言版)(第2版)课后习题答案

数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论 (1)第2章线性表 (5)第3章栈和队列 (13)第4章串、数组和广义表 (26)第5章树和二叉树 (33)第6章图 (42)第7章查找 (54)第8章排序 (65)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
(0012)《数据结构》复习思考题答案(DOC)

(0012)《数据结构》复习思考题答案1:[论述题]1、算法的时间复杂度仅与问题的规模相关吗?2、下列程序段带标号语句的频度和时间复杂度。
( 1 ) I=0;while (I<N)&&(A[I]!=K)I++; //语句3return(I);( 2 ) n为不小于1的整数(设k的初值等于1)void pp ( int k){if (k==n) //语句1for (I=0; I语句2printf(a[I]); //语句3else{ for (I=k-1;I语句4a[I]=a[I]+I; //语句5pp(k+1); //语句6}}//pp3、常用的存储表示方法有哪几种?参考答案:1、不,事实上,算法的时间复杂度不仅与问题的规模相关,还与输入实例中的元素取值等相关,但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。
我们在讨论时间复杂度时,一般就是以最坏情况下的时间复杂度为准的。
2、(1)这个算法完成在一维数组a[n]中查找给定值k的功能。
语句三的频度不仅与问题的规模n有关,还与输入实例中a的各元素取值以及k的取值相关,即与输入实例的初始状态复杂有关。
若a中没有与k相等的元素,则语句三的频度为n;若a中的第一个元素a[0]等于k,则语句三的频度是常数0。
在这种情况下,可用最坏情况下的时间复杂度作为时间复杂度。
在此例中即为O(n)。
这样做的原因是:最坏情况下的时间复杂度是在任何输入实例上运行时间的上界。
有时,也可能选择将算法的平均(或期望)时间复杂度作为讨论目标。
所谓的平均时间复杂度是指所有可能的输入实例以等概率出现的情况下算法的期望运行时间与问题规模的数量级的关系。
此例中,以k出现在任何位置的概率相同,都为1/n,则语句三的执行频度为[0+1+2+…+(n-1)]/n=(n-1)/2。
它决定了此程序段的平均时间复杂度的数量级为f(n)=n,记作O(n)。
(2)在计算包含调用语句的算法的语句频度时,需考虑到调用发生时在被调用算法中各语句的执行情况。
Ch02-01-关系模型、关系数据结构、关系完整性new
• 空值,表示尚未分配专业;
• 非空值,必须是专业关系中某个元组的专业号值。
2. 3 关系的完整性
(2) 参照完整性: 例2.9:学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名) 选修(学号,课程号,成绩) 学号
学生关系
选修关系
课程号
课程关系
根据参照完整性,选修关系中的学号和课程号属性的可能取值:
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个 关系数据库,关系数据库模式包括: (1)若干域的定义; (2)在这些域上定义的若干关系模式。
2.2 关系操作
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
2.2.1 基本的关系操作
选择、投影、并、差、笛卡尔积
查询操作
Supervisor 张清枚 刘逸
Speciality 计算机 机械
Postgraduate 李勇 王敏 刘琛
2.1.2 关系模式
关系模式是型,关系是值。关系模式应刻画如下方面: (1) 关系是元组的集合,因此关系模式必须指明这些元组集合的结构。即它由 哪些属性构成,这些属性来自哪些域,以及属性与域之间的映像关系。 (2) 一个关系通常是由赋予它的元组语义来确定的,凡使该语义为真的笛卡尔 积中的元素全体就构成了该关系模式的关系。 现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完 整性约束条件,关系模式应当刻画出这些完整性约束条件。
其中每一个元素(d1, d2, …, dn)叫做一个n元组(n-tuple)或简称元组(tuple)。元素 中的每一个值di,叫做一个分量(Component)。
若Di为有限集,其基数为mi,则D1×D2×…×Dn的基数为: n M = ∏mi i=1
数据结构C语言版第2版课后习题答案
数据结构(C语言版)(第2版)课后习题答案李冬梅2015.3目录第1章绪论 0第2章线性表 (4)第3章栈和队列 (12)第4章串、数组和广义表 (25)第5章树和二叉树 (32)第6章图 (41)第7章查找 (53)第8章排序 (64)第1章绪论1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。
答案:数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。
数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
在有些情况下,数据元素也称为元素、结点、记录等。
数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
例如,学生基本信息表中的学号、姓名、性别等都是数据项。
数据对象:是性质相同的数据元素的集合,是数据的一个子集。
例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。
航空工业出版社《数据结构》课后题答案
// 输入字符存入 ch //输入未结束 //输入非回车字符
// 输入字符为‘#’ //栈顶元素出栈
// 输入字符为‘@’ //栈清空
//输入其他字符直接进栈
// 输入字符为回车,直接进栈 // 栈 S 中元素出栈进入栈 T
8
课后习题答案
{ Pop (&S, &e); Push (&T, e);
// 栈顶元素出栈 // 出栈元素压入栈 T
void InsertItem (DLinkList q, ElemType item)
{
DLinkList p; p = (DLinkList) malloc (sizeof (DNode));
p -> da=ta item; p -> pri= or q;
p -> next = q -> next; q -> ne= xt p;
{
int i = 0, k = 0;
char x, theta; SeqStack OPTR IniS tack (&OPTR); Push (&OPTR, '#');
//定义运算符栈 // 初始化运算符栈
//将'#'压入栈底
while (str1[i] != '#' || GetTop (OPTR) != '#')
//算符优先关系数组
//输入字符是否属于运算符集合,如果是,返回它在数组中的位置;否则,返回-1
int Isoperator (char ch)
{
int i;
for (i = 0; i < 7; i ++)
数据结构(C语言版)(第2版)
构
5.5遍历二叉
树和线索二叉
树
1
4
5.7哈夫曼树
及其应用
2
5
5.8案例分析
与实现
5.9小结
习题
6.1图的定义和基本
术语
6.3图的类型定义
6.2案例引入
6.4图的存储结构
3
6.7案例分析
与实现
1
6.5图的遍历
4
6.8小结
2
6.6图的应用
5
习题
7.1查找的基本概念
7.2线性表的查找
7.3树表的查找
7.4散列表的查找
7.5小结
习题
8.1基本概念和排序
方法概述
8.3交换排序
8.2插入排序
8.4选择排序
3
8.7外部排序
1
8.5归并排序
4
8.8小结
2
8.6基数排序
5
习题
作者介绍
这是《数据结构(C语言版)(第2版)》的读书笔记模板,暂无该书作者的介绍。
感谢观看
用来学习,适合已经完全学会的人过来查漏补缺。
没有老师的同学可以去b站听听青岛大学王卓老师的课,教材是这本…。
严谨的教科书,和习题及上级指导一起阅读能学到很多东西,花了28个小时阅读,不过对于较难的一些算法
比如图算法的弗洛伊德算法,排序种的基数排序,二叉树中的avl树等还是一知半解,可能再花2个28小时能有突
数据结构(C语言版)(第2
版)
读书笔记模板
目录
01
思维导图
02
内容摘要
03
读书笔记
04
精彩摘录
05
目录分析
06
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
插入 int sqlist_insert(int i,int x,int 定义:线性表的插入是指在第 i(1i n+1 )个 v[],int *p) x,使长度为n的 元素之前插入一个新的数据元素 判断i值是否合法 #define M 10 { int j,n; 线性表 main() n=*p; a , a , a { int a[M]={3,2,7,1,9}; 1 2 , i1 , a i , a n
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
删除
int sqlist_delete (int i, int v[],int 定义:线性表的删除是指将第 i(1i *p) n)个 { int j,n; 元素删除,使长度为n的线性表 判断 i 值是否合法 n=*p; a 1 , a 2 , , a i 1 , a i , a n if((i<1) || (i>n)) return (0); 变成长度为n-1的线性表 else 元素前移 a , a a1 , a 2 , , a i 1 , { for(j=i;j<n;j++) i 1 n v[j-1]=v[j]; 需将第i+1至第n共(n-i)个元素前移 *p=--n; return (1); 算法 } }
§2.2 线性表的顺序存储结构 顺序表:
定义:用一组地址连续的存储单元存放一 个线性表叫~ 元素地址计算方法:
LOC(ai)=LOC(a1)+(i-1)*L LOC(ai+1)=LOC(ai)+L 其中: L—一个元素占用的存储单元个数 LOC(ai)—线性表第i个元素的地址
a1 a2 ai
头指针
H 31
1 7 13 19 25 31 37 43
例 英文字母表(A, B, C,…..,Z)是一个线性表 例
学号 001 002 …… 姓名 张三 李四 …… 年龄 18 19 ……
数据元素
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
a1 a2
……..
L
ai
……..
an
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
V数组下标 0 1
内存
元素序号 1 2
a1 a2
typedef int DATATYPE; #define M 1000 DATATYPE data[M];
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
§2.3 线性表的链式存储结构
特点: 用一组任意的存储单元存储线性表的数据元素 利用指针实现了用不相邻的存储单元存放逻辑上 相邻的元素 每个数据元素ai,除存储本身信息外,还需存储 其直接后继的信息 结点 结点 数据域 指针域 数据域:元素本身信息 指针域:指示直接后继的存储位置
算法时间复杂度T(n) 设Pi是在第i个元素之前插入一个元素的概率, 则在长度为n的线性表中插入一个元素时,所 需移动的元素次数的平均次数为:
n 1 Eis P ( n i 1 ) i i 1
1 若认为 P i n 1 1 n 1 n 则 Eis ( n i 1) 2 n 1i 1 T n O n
书目文件
…… …… …… …… ……
1、各条书目信息之间存在一个对一个的线 性关系 2、如何在计算机中存储书目信息 3、数据操作:查找,插入,删除,修改等
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
约瑟夫环问题
n=8
4 1 4 8 4 7
s=3
m=4
4 2 3 4
6 4 4 5
4
6
2
7
4
3
5
1
8
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
线性结构特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有 一个前驱 除最后一个外,集合中的每个数据元素均只 有一个后继
if((i<1) || (i>n+1)) int i,x,n=5; 变成长度为n+1的线性表 return (0); 元素后移 scanf("%d,%d",&i,&x); a 1 , a 2 , , a i 1else , x , a i , a n sqlist_insert (i,x,a,&n); { for(j=n;j>=i;j--) 需将第i至第n共(n-i+1)个元素后移 for(i=0;i<n;i++) v[j]=v[j-1]; printf("%d,",a[i]); v[j]=x; printf("\nn=%d\n",n); 算法 *p=++n; 插入 } return (1); } Ch2_1.c }
Ch2_2.c
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
V数组下标 内存 元素序号 0 1
V数组下标 内存 元素序号 0 1
a1 a2
1 2
a1 a2
1 2
i-1 i
ai ai+1
i i+1
i-1 i
ai+1 ai+2
i i+1
n-1 n
an
n n+1
n-2 n-1
an
n-1 n
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
特征:有限、序列、同构 元素个数n — 表长度,n=0空表 1<i<n时 ai的直接前驱是ai-1,a1无直接前驱 ai的直接后继是ai+1,an无直接后继 元素同构,且不能出现缺项 运算:存取、插入、删除、查找、合并、分解、 排序、求长度
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
§2.1 线性表的逻辑结构
定义:一个线性表是n个数据元素的有限 序列 如 a 1 , a 2 ,...... a i ,...... a n
算法评价 设Qi是删除第i个元素的概率,则在长度为n的线性表 中删除一个元素所需移动的元素次数的平均次数为:
n E Q (n i) de i i 1 1 若认为 Q i n 1 n n 1 则E (n i) de 2 ni 1 T n O n
下一章
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
§2.0 实例
书目自动检索系统
001 002 003 004 …… 高等数学 理论力学 高等数学 线性代数 …… 樊映川 罗远祥 华罗庚 栾汝书 …… S01 L01 S01 S02 ……
L
……..
……..
an
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
特点: 实现逻辑上相邻—物理地址相邻 实现随机存取 实现:可用C语言的一维数组实现
ai ai+1
i i+1
i-1 i
x
ai ai+1
i i+1
n-1 n
an
n n+1
n-1 n
an-1 an
n n+1
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
V数组下标 0 1
内存 元素序号
V数组下标 0 1
内存
元素序号 1 2
a1 a2
1 2
a1 a2
i-1 i
Generated by Foxit PDF Creator © Foxit Software For evaluation only.
例 线性表 (ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG)
存储地址 数据域 LI QIAN SUN WANG WU ZHAO ZHENG ZHOU 指针域
DATATYPE *pData = (DATATYPE *) malloc(M*sizeof(DATATYPE)); free(pData); 数据元素不是简单类型时,可定义结构体数组
Generated by Foxit PDF Creator © Foxit Software For evaluation only.