算法与数据结构和算法分析与设计的区别
本质上没什么区别的按照我们学校本科的课程名
算法分析与设计 就是 高级的 算法与数据结构....
数据结构之算法和算法分析[2]
算法与数据结构是相辅相承的 解决某一特定类型问题的算法可以选定不同的数据结构 而且选择恰当与否直接影响算法的效率 反之 一种数据结构的优劣由各种算法的执行来体现
要设计一个好的算法通常要考虑以下的要求
⑴正确 算法的执行结果应当满足预先规定的功能和性能要求
⑵可读 一个算法应当思路清晰 层次分明 简单明了 易读易懂
⑶健壮 当输入不合法数据时 应能作适当处理 不至引起严重后果
⑷高效 有效使用存储空间和有较高的时间效率
算法描述
算法可以使用各种不同的 *** 来描述
最简单的 *** 是使用自然语言 用自然语言来描述算法的优点是简单且便于人们对算法的阅读 缺点是不够严谨
可以使用程序流程图 N S图等算法描述工具 其特点是描述过程简洁 明了
用以上两种 *** 描述的算法不能够直接在计算机上执行 若要将它转换成可执行的程序还有一个编程的问题
可以直接使用某种程序设计语言来描述算法 不过直接使用程序设计语言并不容易 而且不太直观 常常需要借助于注释才能使人看明白
lishixinzhi/Article/program/sjjg/201311/23944
分享相关内容的知识扩展阅读:
想自学数据结构,请问买什么书好?
如题~希望内容能详尽易懂的!![算法与数据结构和算法分析与设计的区别(数据结构之算法和算法分析[2])-第1张图片-波音达手游百科 算法与数据结构和算法分析与设计的区别(数据结构之算法和算法分析[2])-第1张图片-波音达手游百科](http://www.boyinda.com/images/2024/rkxfdf3frex5075.jpg)
一:介绍
《数据结构与算法》以基本数据结构和算法设计策略为知识单元,系统地介绍了数据结构的知识与应用、计算机算法的设计与分析 *** ,主要内容包括线性表、树、图和广义表、算法设计策略以及查找与排序算法等。《数据结构与算法》注重理论与实践相结合,内容深入浅出,可以作为高等院校计算机学科相关专业的教材或参考书,同时对计算机科技工作者也有参考价值。
二:内容提要
本书是国家级双语教学示范课程《数据结构》的配套教材,根据教育部高等学校计算机科学与技术教学指导委员会制定的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范》编写。全书每章均以数据的逻辑结构、存储结构和相应的算法实现为主线,并对算法的运算效率进行分析。全书分为8章,涵盖了各种常见数据结构。第1章主要介绍数据结构和算法分析的基本概念,第2~6章主要介绍典型的线性结构、树型结构和图型结构,第7~8章分别介绍查找和排序操作。
另外,每章后面附有习题和上机实验内容,上机实验提供了完整的、可运行的程序上机实验供读者参考,以加深读者对所学知识的理解和应用。
本书既可作为高等院校计算机及相关专业数据结构课程的教学用书,也可作为从事计算机工程与应用的广大读者的参考书。
三:目录
第1章 绪论 1
1.1 数据及其逻辑结构 1
1.1.1 基本概念 1
1.1.2 逻辑结构 2
1.2 数据结构 2
1.2.1 什么是数据结构 2
1.2.2 数据结构的二元组描述 3
1.2.3 数据结构和数据类型 4
1.3 存储实现与运算实现 4
1.3.1 顺序存储结构 4
1.3.2 链式存储结构 5
1.3.3 索引存储结构 6
1.3.4 散列存储结构 6
1.3.5 运算实现 7
1.3.6 进一步讨论 8
1.4 算法描述和算法分析 8
1.4.1 什么是算法 8
1.4.2 算法描述 9
1.4.3 算法分析 11
1.5 *** 教辅资源 14
1.6 小结 14
练习一 15
第2章 线性表 19
2.1 线性表的基本概念 19
2.2 线性表的顺序表示和实现 21
2.3 线性表的链接表示和实现 26
2.3.1 线性表的链式存储原理 27
2.3.2 线性表的链式存储算法实现 27
2.3.3 算法效率分析 32
2.4 循环链表和双链表 32
2.4.1 循环链表 32
2.4.2 双向链表 33
2.5 线性表的应用举例 35
2.5.1 问题的提出 35
2.5.2 分析问题 36
2.5.3 算法实现 36
2.5.4 程序 39
2.6 小结 44
练习二 45
第3章 栈和队列 54
3.1 栈 54
3.1.1 栈的定义 54
3.1.2 栈的基本运算 54
3.1.3 栈的顺序存储结构 55
3.1.4 栈的链式存储结构 58
3.1.5 栈的应用 60
3.2 队列 63
3.2.1 队列的定义 63
3.2.2 队列的基本运算 63
3.2.3 队列的顺序存储结构 64
3.2.4 队列的链式存储结构 68
3.2.5 队列的应用 72
3.3 小结 74
练习三 75
第4章 串和数组 79
4.1 串的基本概念 79
4.2 串的基本操作和串的存储结构 80
4.2.1 串的基本操作 80
4.2.2 串的静态顺序存储结构 81
4.2.3 串的动态顺序存储结构 87
4.2.4 串的链式存储结构 91
4.3 数组的定义和运算 92
4.4 数组的顺序存储结构 92
4.5 特殊矩阵的压缩存储 94
4.5.1 特殊矩阵 95
4.5.2 稀疏矩阵 96
4.6 小结 103
练习四 104
第5章 树和二叉树 110
5.1 树的概念与定义 110
5.1.1 树的定义 110
5.1.2 树的基本操作 111
5.2 二叉树的性质和存储结构 111
5.2.1 二叉树的定义与基本操作 111
5.2.2 二叉树的性质 112
5.2.3 二叉树的存储结构 114
5.3 二叉树的遍历与线索化 116
5.3.1 二叉树的遍历 116
5.3.2 二叉树的非递归遍历 119
5.3.3 树的唯一性问题 120
5.3.4 二叉树遍历的应用 121
5.3.5 线索二叉树 124
5.4 树、森林和二叉树的关系 126
5.4.1 树的存储结构 127
5.4.2 树、森林与二叉树的相互转换 129
5.4.3 树与森林的遍历 132
5.5 哈夫曼树及其应用 133
5.5.1 哈夫曼树的定义 133
5.5.2 哈夫曼树的构造 134
5.5.3 哈夫曼编码 135
5.6 小结 137
练习五 139
第6章 图 146
6.1 图的定义及理论 146
6.2 图的存储结构及算法实现 149
6.2.1 图的基本运算的抽象 149
6.2.2 数组表示法 150
6.2.3 邻接表表示 154
6.2.4 十字链表表示 160
6.3 图的算法实现 162
6.3.1 图的遍历算法 162
6.3.2 图的连通性 166
6.4 图的应用 167
6.4.1 图的最小生成树 167
6.4.2 最短路径 171
6.4.3 任意顶点最短路径 175
6.5 小结 176
练习六 177
第7章 查找表 183
7.1 查找表的基本概念 183
7.2 静态查找表 184
7.2.1 顺序查找 184
7.2.2 折半查找 187
7.2.3 分块查找 190
7.3 动态查找表 192
7.3.1 二叉排序树 192
7.3.2 平衡二叉树 199
7.4 哈希表 200
7.4.1 哈希表的基本概念 201
7.4.2 哈希函数的构造 *** 202
7.4.3 处理哈希冲突的 *** 206
7.5 小结 209
练习七 210
第8章 内部排序 217
8.1 排序的基本概念 217
8.1.1 排序 217
8.1.2 内部排序和外部排序 218
8.1.3 排序算法评价 218
8.1.4 排序算法的稳定性 218
8.1.5 待排序记录序列的存储结构 218
8.2 直接插入排序和希尔排序 218
8.2.1 直接插入排序 219
8.2.2 折半查找插入排序 222
8.2.3 希尔排序 223
8.3 选择排序和堆排序 225
8.3.1 选择排序 226
8.3.2 堆排序 227
8.4 冒泡排序和快速排序 229
8.4.1 冒泡排序 229
8.4.2 快速排序 231
8.5 归并排序 235
8.6 基数排序 236
8.6.1 基本思想 236
8.6.2 基数排序过程与算法 237
8.7 各种内部排序 *** 的比较讨论 241
8.8 外部排序 243
8.8.1 外部存储系统 243
8.8.2 外部排序面临的问题 246
8.8.3 外部排序的基本过程 246
8.9 小结 247
练习八 248
数据结构题、大哥大姐帮我做下题吧。万分感谢啊
1、有一二叉树的先序遍历序列为ABDEHIKLCFG,中序遍历序列为DBHEKILAFCG,画出此二叉树2、有七个带权结点,其权值分别为{3,7,18,2,6,10,14},试以它们为叶子结点构造一棵哈夫曼树(请按照每个结点的左子树根结点的权小于等于右子树根结点的权的次序构造),画出哈夫曼树。
1、链队列的结构如下:
tpedef struct node
{ Eemtype data;
struct node *next;
}QNode;
typedef struct
{ QNode *front,*rear;
}LQueue;
int dlqueue(LQueue *q,Elemtype *x)
{//带头结点的队列q为空时返回0,不为空时删除的队头元素,并存入*x中
if (_____________________) return 0;
s=q->front->next;
*x=s->data;
_______________________;
if(q->rear==s) ________________________;
______________________;
return 1;
}
2、顺序栈的存储结构如下:
#define MAXSIZE 20
typedef struct node
{ Elemtype elem[MAXSIZE];
int top;
}Sqstack;
int push(Sqstack *p,Elemtype y)
{ //若顺序栈p满时返回0,若p未满,将元素y进栈
if(__________________)
return 0;
________________________;
________________________;
return 1;
}
单链表的结点的结构如下:
typedef struct node
{ Elemtype data;
struct node *next;
}LNode;
写出算法的功能
LNode * f( int n )
{ L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
s=L;
for(i=1;i<=n;i++)
{ p=(LNode *)malloc(sizeof(LNode));
scanf(&p->data);
p->next=NULL;
s->next=p;
s=p;
}
return L;
}
什么是数据、数据对象、数据元素、数据结构、数据的逻辑结构与物理结构、逻辑结构与物理结构间的关系。
2、面向对象概念:理解什么是数据类型、抽象数据类型、数据抽象和信息隐蔽原则。了解什么是面向对象。由于目前关于这个问题有许多说法,我们采用了一种更流行的说法,即Coad与Yourdon 给出的定义:面向对象 = 对象 + 类 + 继承 + 通信。
要点:
·抽象数据类型的封装性
·面向对象系统结构的稳定性
·面向对象 *** 着眼点在于应用问题所涉及的对象
3、数据结构的抽象层次:理解用对象类表示的各种数据结构
4、算法与算法分析:理解算法的定义、算法的特性、算法的时间代价、算法的空间代价。
要点:·算法与程序的不同之处需要从算法的特性来解释
·算法的正确性是最主要的要求
·算法的可读性是必须考虑的
·程序的程序步数的计算与算法的事前估计
·程序的时间代价是指算法的渐进时间复杂性度量
第二章 数组
1、作为抽象数据类型的数组:数组的定义、数组的按行顺序存储与按列顺序存储
要点:
·数组元素的存放地址计算
2、顺序表:顺序表的定义、搜索、插入与删除
要点:
·顺序表搜索算法、平均比较次数的计算
·插入与删除算法、平均移动次数的计算
3、多项式:多项式的定义
4、字符串:字符串的定义及其操作的实现
要点:
·串重载操作的定义与实现
第三章 链接表
1、单链表:单链表定义、相应操作的实现、单链表的游标类。
要点:
·单链表的两种定义方式(复合方式与嵌套方式)
·单链表的搜索算法与插入、删除算法
·单链表的递归与迭代算法
2、循环链表:单链表与循环链表的异同
3、双向链表:双向链表的搜索、插入与删除算法、链表带表头结点的优点
4、多项式的链接表示
第四章 栈与队列
1、栈:栈的特性、栈的基本运算
要点:
·栈的数组实现、栈的链表实现
·栈满及栈空条件、抽象数据类型中的先决条件与后置条件
2、栈的应用:用后缀表示计算表达式,中缀表示改后缀表示
3、队列:队列的特性、队列的基本运算
要点:
·队列的数组实现:循环队列中队头与队尾指针的表示,队满及队空条件
·队列的链表实现:链式队列中的队头与队尾指针的表示、
4、双向队列:双向队列的插入与删除算法
5、优先级队列:优先级队列的插入与删除算法
第五章 递归与广义表
1、递归:递归的定义、递归的数据结构、递归问题用递归过程求解
要点:·链表是递归的数据结构,可用递归过程求解有关链表的问题
2、递归实现时栈的应用
要点:·递归的分层(树形)表示:递归树
·递归深度(递归树的深度)与递归工作栈的关系
·单向递归与尾递归的迭代实现
3、广义表:广义表定义、广义表长度、广义表深度、广义表表头、广义表表尾
要点:
·用图形表示广义表的存储结构
·广义表的递归算法
第六章 树与森林
1、树:树的定义、树的基本运算
要点:
·树的分层定义是递归的
·树中结点个数与高度的关系
2、二叉树:二叉树定义、二叉树的基本运算
要点:
·二叉树性质、二叉树中结点个数与高度的关系、不同种类的二叉树棵数
·完全二叉树的顺序存储、完全二叉树的双亲、子女和兄弟的位置
·二叉树的前序·中序·后序·层次遍历
·前序
·中序
·后序的线索化二叉树、前驱与后继的查找 ***
3、霍夫曼树:霍夫曼树的构造 *** 、霍夫曼编码、带权路径长度的计算
4、树的存储:树的广义表表示、树的双亲表示、树与二叉树的对应关系、树的先根·中根·后根·层次遍历。
5、堆:堆的定义、堆的插入与删除算法
要点:
·形成堆时用到的向下调整算法及形成堆时比较次数的上界估计
·堆插入时用到的向上调整算法
第七章 *** 与搜索
1、 *** 的概念: *** 的基本运算、 *** 的存储表示
要点:
·用位数组表示 *** 时 *** 基本运算的实现
·用有序链表表示 *** 时 *** 基本运算的实现
2、并查集:并查集定义、并查集的三种基本运算的实现
3、基本搜索 ***
要点:
·对一般表的顺序搜索算法(包括有监视哨和没有监视哨)
·对有序顺序表的顺序搜索算法、用判定树(即扩充二叉搜索树)描述搜索,以及平均搜索长度(成功与不成功)的计算。
·对有序顺序表的折半搜索算法、用判定树(即扩充二叉搜索树)描述搜索,以及平均搜索长度(成功与不成功)的计算。
4、二叉搜索树:
要点:
·动态搜索树与静态搜索树的特性
·二叉搜索树的定义、二叉搜索树上的搜索算法、二叉搜索树搜索时的平均搜索长度(成功与不成功)的计算。
·AVL树结点上的平衡因子、AVL树的平衡旋转 ***
·高度为h的AVL树上的最少结点个数与最多结点个数
· AVL树的搜索 *** 、插入与删除 ***
第八章 图
1、图:图的定义与图的存储表示
要点:
·邻接矩阵表示(通常是稀疏矩阵)
·邻接表与逆邻接表表示
·邻接多重表(十字链表)表示
2、深度优先遍历与广度优先遍历
要点:
·生成树与生成树林的定义
·深度优先搜索是个递归的过程,而广度优先搜索是个非递归的过程
·为防止重复访问已经访问过的顶点,需要设置一个访问标志数组visited
3、图的连通性
要点:
·深度优先搜索可以遍历一个连通分量上的所有顶点
·对非连通图进行遍历,可以建立一个生成森林
·对强连通图进行遍历,可能建立一个生成森林
·关节点的计算和以最少的边构成重连通图
4、最小生成树
要点:
·对于连通 *** 、可用不会构成环路的权值最小的n-1条边构成最小生成树
·会画出用Kruskal算法及Prim算法构造最小生成树的过程
5、单源最短路径
要点:
·采用逐步求解的方式求某一顶点到其他顶点的最短路径
·要求每条边的权值必须大于零
6、活动 ***
要点:
·拓扑排序、关键路径、关键活动、AOE网
·拓扑排序将一个偏序图转化为一个全序图。
·为实现拓扑排序,要建立一个栈,将所有入度为零的顶点进栈
·关键路径的计算
第九章 排序
1、基本概念:关键码、初始关键码排列、关键码比较次数、数据移动次数、稳定性、附加存储、内部排序、外部排序
2、插入排序:
要点:
·当待排序的关键码序列已经基本有序时,用直接插入排序最快
3、选择排序:
要点:
·用直接选择排序在一个待排序区间中选出最小的数据时,与区间之一个数据对调,而不是顺次后移。这导致 *** 不稳定。
·当在n个数据(n很大)中选出最小的5 ~ 8个数据时,锦标赛排序最快
·锦标赛排序的算法中将待排序的数据个数n补足到2的k次幂2k-1<n≤2k
·在堆排序中将待排序的数据组织成完全二叉树的顺序存储。
4、交换排序:
要点:
·快速排序是一个递归的排序 ***
·当待排序关键码序列已经基本有序时,快速排序显著变慢。
5、二路归并排序:
要点:
·归并排序可以递归执行
·归并排序需要较多的附加存储。可以采用一种"推拉法"(参见教科书上习题)实现归并排序,算法的时间复杂度为O (n)、空间复杂度为O(1)
·归并排序对待排序关键码的初始排列不敏感,排序速度较稳定
6、外排序
要点:
·多路平衡归并排序的过程、I/O缓冲区个数的配置
·外排序的时间分析、利用败者树进行多路平衡归并
·利用置换选择 *** 生成不等长的初始归并段
·更佳归并树的构造及WPL的计算
第十章 索引与散列
1、线性索引:
要点:
·密集索引、稀疏索引、索引表计算
·基于属性查找建立倒排索引、单元式倒排表
2、动态搜索树
要点:
·平衡的m路搜索树的定义、搜索算法
·B树的定义、B树与平衡的m路搜索树的关系
·B树的插入(包括结点分裂)、删除(包括结点调整与合并) ***
·B树中结点个数与高度的关系
·B+树的定义、搜索、插入与删除的 ***
3、散列表
要点:
·散列函数的比较
·装填因子 a 与平均搜索长度的关系,平均搜索长度与表长m及表中已有数据对象个数n的关系
·解决地址冲突的(闭散列)线性探查法的运用,平均探查次数的计算
·线性探查法的删除问题、散列表类的设计中必须为各地址设置三个状态
·线性探查法中的聚集问题
·解决地址冲突的(闭散列)双散列法的运用,平均探查次数的计算
·双散列法中再散列函数的设计要求与表长m互质,为此m设计为质数较宜
·解决地址冲突的(闭散列)二次散列法的运用,平均探查次数的计算
·注意:二次散列法中装填因子 a 与表长m的设置
·解决地址冲突的(开散列)链地址法的运用,平均探查次数的计算
数据结构里面的非递减有序排列是什么意思?
就是关键字递增序排列,但是并非单调递增(因为有重复的关键字)。
数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一、名词定义
数据结构是指相互之间存在着一种或多种关系的数据元素的 *** 和该 *** 中数据元素之间的关系组成。记为:
1.Data_Structure=(D,R)
2.其中D是数据元素的 *** ,R是该 *** 中所有元素之间的关系的有限 *** 。
其它定义
1.Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实 例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的 *** ”。
2.Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type) 的物理实现。”
3.Robert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象 层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。
4.数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻 辑结构,数据的存储结构和数据运算结构。
二、重要意义
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了更优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计 *** 和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
三、研究内容
在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
“数据结构”作为一门独立的课程在国外是从1968年才开始设立的。 1968年美国唐纳德·克努特(Donald Ervin Knuth)教授开创了数据结构的最初体系,他所著的《计算机程序设计艺术》之一卷《基本算法》是之一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”在计算机科学中是一门综合性的专业基础课,数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。
计算机科学是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:信息的表示,信息的处理 。
而信息的表示和组织又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。计算机的程序是对信息进行加工处理。在大多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重要的结构关系,这就是数据结构的内容。数据的结构,直接影响算法的选择和效率。
计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。
寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。当人们用计算机处理数值计算问题时,所用的数学模型是用数学方程描述。所涉及的运算对象一般是简单的整形、实型和逻辑型数据,因此程序设计者的主要精力集中于程序设计技巧上,而不是数据的存储和组织上。然而,计算机应用的更多领域是“非数值型计算问题”,它们的数学模型无法用数学方程描述,而是用数据结构描述,解决此类问题的关键是设计出合适的数据结构,描述非数值型问题的数学模型是用线性表、树、图等结构来描述的。
计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。
数据是信息的载体,是可以被计算机识别存储并加工处理的描述客观事物的信息符号的总称。所有能被输入计算机中,且能被计算机处理的符号的 *** ,它是计算机程序加工处理的对象。客观事物包括数值、字符、声音、图形、图像等,它们本身并不是数据,只有通过编码变成能被计算机识别、存储和处理的符号形式后才是数据。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体考虑。一个数据元素由若干个数据项组成。数据项是数据结构中讨论的最小单位。有两类数据元素:若数据元素可再分,则每一个独立的处理单元就是数据项,数据元素是数据项的 *** ;若数据元素不可再分,则数据元素和数据项是同一概念,如:整数"5",字符 "N" 等。例如描述一个学生的信息的数据元素可由下列6个数据项组成。其中的出生日期又可以由三个数据项:"年"、"月"和"日"组成,则称"出生日期"为组合项,而其它不可分割的数据项为原子项。
关键字指的是能识别一个或多个数据元素的数据项。若能起唯一识别作用,则称之为 "主" 关键字,否则称之为 "次" 关键字。
数据对象是性质相同的数据元素的 *** ,是数据的一个子集。数据对象可以是有限的,也可以是无限的。
数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单计算等的操作过程。在早期,计算机主要用于科学和工程计算,进入八十年代以后,计算机主要用于数据处理。据有关统计资料表明,计算机用于数据处理的时间比例达到80%以上,随着时间的推移和计算机应用的进一步普及,计算机用于数据处理的时间比例必将进一步增大。