
数据结构
文章平均质量分 74
yzkzoo
dfg
展开
-
数据结构的基本概念和术语
一、数据、数据元素、数据对象、数据结构的定义1、数据的定义定义一:数据是客观事物的符号表示。学号 姓名 语文 数学 C语言 6201001 张三 85 54 92 6201002 李四 92 84 64 6201003 王五 87 74 73 6201004 ... 例:张三的C语言考试成绩为92分,92就是该同学的成绩数据。定义二:能输入到转载 2007-09-18 08:30:00 · 634 阅读 · 0 评论 -
树、二叉树定义及术语
一、树的定义:树是n(n>=0)个结点的有限集。在任意一棵非空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...Tm,其中每一个集合本身又是一棵树,并且称为根的子树.二、树的基本概念:树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度。度为0的结点称为叶子或终端转载 2007-09-23 01:25:00 · 657 阅读 · 0 评论 -
二叉树的存储结构
一、复习二叉树的定义二叉树的基本特征:每个结点的度不大于2。二、顺序存储结构#define MAX_TREE_SIZE 100typedef TElemType SqBiTree[MAX_TREE_SIZE];SqBiTree bt; 结点编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 结点值 1 2 3 4 5 0 0 0 0转载 2007-09-23 01:27:00 · 623 阅读 · 0 评论 -
静态查找表(一)顺序表的查找
一、查找的基本概念 查找表: 是由同一类型的数据元素(或记录)构成的集合。 查找表的操作: 1、查询某个“特定的”数据元素是否在查找表中。2、检索某个“特定的”数据元素的各种属性。3、在查找表中插入一个数据元素;4、从查找表中刪去某个数据元素。 静态查找表 对查找表只作前两种操作 动态查找表 在查找过程中查找表元素集合动态改变 关键字 是数据元素(或记录)中某个数据项的值 主关键字转载 2007-09-23 01:32:00 · 1177 阅读 · 0 评论 -
栈的表示与实现及栈的应用
实现栈的顺序存储。栈实现示例#include#include#include#define ERROR 0#define TRUE 1#define FALSE 0#define OK 1#define EQUAL 1#define OVERFLOW -1#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typede转载 2007-09-21 17:38:00 · 600 阅读 · 0 评论 -
数组的顺序表示与实现
一、数组的定义 几乎所有的程序设计语言都把数组类型设定为固有类型。以抽象数据类型的形式讨论数组的定义和实现,可以让我们加深对数组类型的理解。数组的定义:ADT Array{数据对象:ji=0,...,bi-1,i=1,2,...,n;D={aj1j2...jn|n(>0)称为数组的维数,bi是数组第i维的长度,ji是数组元素的第i维下标,aj1j2...jn (-Ele转载 2007-09-21 17:39:00 · 537 阅读 · 0 评论 -
图的定义与术语
一、图的定义图是一种数据元素间为多对多关系的数据结构,加上一组基本操作构成的抽象数据类型。 ADT Graph{数据对象V :V是具有相同特性的数据元素的集合,称为顶点集。数据关系R:R={VR}VR={|v,w(-V且P(v,w),表示从v到w的弧,谓词P(v,w)定义了弧的意义或信息}基本操作P:CreateGraph(&G,V,VR);初始条转载 2007-09-23 01:29:00 · 582 阅读 · 0 评论 -
索引文件
一、索引文件的基本概念除了文件本身(称作数据区)之外,别建立一张指示逻辑记录和物理记录之间一一对应关系的表--索引表。索引表中的每一项称作索引项。不论主文件是否按关键字有序,索引表中的索引项总是按关键字(或逻辑记录号)顺序排列。若数据区中的记录也按关键字顺序排列,则称索引顺序文件。反之,若数据区中记录不按关键字顺序排列,则称非顺序文件。数据区:物理记录号 姓名 年龄 体转载 2007-10-21 10:24:00 · 949 阅读 · 0 评论 -
排序及查找方法
#include #include#define N 11/*用监视哨查找*/int search(int array[],int n,int k){int i;i=n-1;array[0]=k;while(array!=k) i--;return(i);}/*折半查找法*/int halfsearch(int array[],int n,int k){int i,j,mid;i=1;转载 2007-10-21 10:28:00 · 524 阅读 · 0 评论 -
插入排序,快速排序
一、排序概述排序:将一个数据元素的无序序列重新排列成一个按关键字有序的序列。姓名 年龄 体重 1李由 57 62 2王天 54 76 3七大 24 75 4张强 24 72 5陈华 24 53 上表按年龄无序,如果按关键字年龄用某方法排序后得到下表:姓名 年龄 体重 3七大 24 75 4张强 24 72 5陈华 24 53 2王天 54 76 1李由 57 62 注意转载 2007-10-21 10:18:00 · 1458 阅读 · 0 评论 -
动态查找表
一、动态查找表的定义动态查找表的特点是:表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在其关键字等于key的记录,则查找成功返回,否则插入关键字等于key的记录。以政是动态查找表的定义:ADT DymanicSearchTable{数据对象D:D是具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。数据关系R:数据转载 2007-10-21 09:57:00 · 773 阅读 · 0 评论 -
文件概念,顺序文件
一、表与文件和表类似,文件是大量记录的集合。习惯上称存储在主存储器(内存储器)中的记录集合为表,称存储在二级存储器(外存储器)中的记录集合为文件。二、文件基本概念文件:是由大量性质相同的记录组成的集合。文件按记录类型不同分类 操作系统的文件 一维的连续的字符序列 数据库文件 带有结构的记录的集合,每条记录是由一个或多个数据项组成的集合。姓名 准考证号 政治 语文 数学转载 2007-10-21 10:23:00 · 770 阅读 · 0 评论 -
数据结构教程总复习
一、学习数据结构的意义设想一下,你决定向一个公司投资,而你对某个公司的了解只限于该公司的一条生产线每分钟可生产2000件产品,你会作出投资的决定吗?如果你是一个公司的管理者,这个公司日常的每笔交易的详细情况对你来讲的确重要,但如果你把时间花在这些数据上面,你就无法站在宏观的高度上把握公司的经营方向。不管是经营一个公司,还是管理一个国家,对描述事物特征的数据必须加以分析与加工,现实事转载 2007-10-21 10:25:00 · 717 阅读 · 0 评论 -
哈希表(一)
一、哈希表的概念及作用一般的线性表,树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较“的基础上,查找的效率依赖于查找过程中所进行的比较次数。 理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位转载 2007-10-21 10:01:00 · 965 阅读 · 0 评论 -
哈希表(二)
一、复习上次课内容什么是哈希表?如何构造哈希表?提出问题:如何处理冲突?二、处理冲突的方法 成绩一 成绩二... 3 ... ... ... 24 刘丽 82 95 25 ... 26 陈伟 ... ... 33 吴军 ... ... 42 李秋梅 ... ... 46 刘宏英 ... ..转载 2007-10-21 10:04:00 · 547 阅读 · 0 评论 -
实验七 查找
顺序查找折半查找 顺序查找及折半查找示例 #include typedef int KeyType;typedef struct{ KeyType key; int maths; int english;}ElemType;#define EQ(a,b) ((a)==(b))#define LT(a,b) ((a)#define LQ(a,b) ((a)ty转载 2007-10-21 10:19:00 · 535 阅读 · 0 评论 -
选择排序,归并排序
一、选择排序每一趟在n-i+1(i=1,2,...n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。二、简单选择排序算法:Smp_Selecpass(ListType &r,int i){k=i;for(j=i+1;jif (r[j].keyk=j;if (k!=i) { t=r;r=r[k];r[k]=t;}}Smp_Sor转载 2007-10-21 10:21:00 · 555 阅读 · 0 评论 -
静态查找表(二)有序表的查找
一、折半查找的查找过程以有序表表示静态查找表时,Search函数可用折半查找来实现。先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。 二、折半查找的查找实现int Search_Bin(SSTable ST,KeyType key){low=1;high=ST.length;while(lowmid=(low+high)/2;转载 2007-09-23 01:33:00 · 701 阅读 · 0 评论 -
图的存储结构
一、数组表示法用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。// 图的数组(邻接矩阵)存储表示#define INFINITY INT_MAX //最大值无穷大#define MAX_VERTEX_NUM 20 //最大顶点个数typedef enum{DG,DN,AG,AN} GraphKind;//有向图,有向网,无向图,无向网转载 2007-09-23 01:31:00 · 689 阅读 · 0 评论 -
抽象数据类型的表示与实现
一、抽象数据类型定义(ADT)作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。定义:一个数学模型以及定义在该模型上的一组操作。关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第一个和最转载 2007-09-18 16:26:00 · 924 阅读 · 0 评论 -
算法及算法设计要求
一、算法的定义及特性1、定义:ispass(int num[4][4]) { int i,j; for(i=0;ifor(j=0;jif(num[j]!=i*4+j+1)/*一条指令,多个操作*/return 0; return 1; }/*上面是一个类似华容道游戏中判断游戏是否结束的算法*/算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一转载 2007-09-18 16:30:00 · 1751 阅读 · 0 评论 -
线性表的类型定义
一、线性表的定义线性表是最常用且最简单的一种数据结构。一个线性表是n个数据元素的有限序列。数据元素可以是一个数、一个符号、也可以是一幅图、一页书或更复杂的信息。线性表例:1、1 2 3 4 5 6 7 2、 3、学号 姓名 语文 数学 C语言 6201001 张三 85 54 92 6201002 李四 92 84 64 6201003转载 2007-09-18 16:34:00 · 786 阅读 · 0 评论 -
线性表的顺序表示和实现
一、线性表的顺序表示用一组地址连续的存储单元依次存储线性表的数据元素。C语言中的数组即采用顺序存储方式。2000:0001 2000:0003 2000:0005 2000:0007 2000:0009 2000:0011 2000:0013 2000:0015 2000:0017 ... 2000:1001 2000:1003 0 0 0 0 0 0 0 0 0 0 0 0 0转载 2007-09-19 12:40:00 · 460 阅读 · 0 评论 -
线性表的链式表示与实现
一、复习顺序表的定义。二、线性链表的概念:以链式结构存储的线性表称之为线性链表。特点是该线性表中的数据元素可以用任意的存储单元来存储。线性表中逻辑相邻的两元素的存储空间可以是不连续的。为表示逻辑上的顺序关系,对表的每个数据元素除存储本身的信息之外,还需存储一个指示其直接衙继的信息。这两部分信息组成数据元素的存储映象,称为结点。2000:1000 2000:1010 200转载 2007-09-19 12:42:00 · 570 阅读 · 0 评论 -
循环链表与双向链表
一、复习线性链表的存储结构 二、循环链表的存储结构循环链表是加一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点。 循环链表的操作和线性链表基本一致,差别仅在于算法中的循环条件不是p或p->next是否为空,而是它们是否等于头指针。三、双向链表的存储结构 提问:单向链表的缺点是什么?提示:如何寻找结点的直接前趋。双向链表可以克服单转载 2007-09-19 12:44:00 · 972 阅读 · 0 评论 -
栈的表示与实现
一、栈的定义栈是限定仅在表尾进行插入或删除操作的线性表。栈的表尾称为栈顶,表头称为栈底,不含元素的空表称为空栈。栈的抽象数据类型定义:ADT Stack{数据对象={ai|ai(- ElemSet,i=1,2,...,n,n>=0}数据关系:R1={|ai-1,ai(- D,i=2,...,n}基本操作:InitStack(&S) 构造一个空栈SDes转载 2007-09-19 12:45:00 · 544 阅读 · 0 评论 -
栈的应用
一、栈应用之一:数制转换将十进制数转换成其它进制的数有一种简单的方法:例:十进制转换成八进制:(66)10=(102)866/8=8 余 28/8=1 余 01/8=0 余 1结果为余数的逆序:102 。先求得的余数在写出结果时最后写出,最后求出的余数最先写出,符合栈的先入后出性质,故可用栈来实现数制转换:void conversion() { pSqSt转载 2007-09-19 12:48:00 · 679 阅读 · 0 评论 -
队列
一、队列的定义:队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。象日常生活中的排队,最早入队的最早离开。在队列中,允许插入的的一端叫队尾,允许删除的一端则称为队头。抽象数据类型队列:ADT Queue{数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0} 数据关系: R1={ | ai-1,ai(- D,转载 2007-09-19 12:53:00 · 440 阅读 · 0 评论 -
串的表示和实现
一、复习串的定义串的定义 二、定长顺序存储表示类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列.#define MAXSTRLEN 255typedef unsigned char SString[MAXSTRLEN+1] //0号单元存放串长串的实际长度可在这予定义长度的范围内随意,超过予定义长度的串值则被舍去串长可用下标为0的数组转载 2007-09-19 12:56:00 · 1119 阅读 · 0 评论 -
算法效率的度量和存储空间需求
一、算法效率的度量 算法执行的时间是算法优劣和问题规模的函数。评价一个算法的优劣,可以在相同的规模下,考察算法执行时间的长短来进行判断。而一个程序的执行时间通常有两种方法:1、事后统计的方法。缺点:不利于较大范围内的算法比较。(异地,异时,异境) 2、事前分析估算的方法。程序在计算机上运行所需时间的影响因素 算法本身选用的策略 问题的规模 规模越大,消耗时间越多 书写程转载 2007-09-18 16:32:00 · 1029 阅读 · 0 评论 -
循环链表实验
一、单向链表的存储表示C源程序#include#include#include#define ERROR 0#define OK 1#define EQUAL 1#define OVERFLOW -1#define LIST_INIT_SIZE 100#define LISTINCREMENT 10struct STU{ char name[20]; char stu转载 2007-09-19 12:52:00 · 462 阅读 · 0 评论 -
串的定义
一、串定义串(或字符串),是由零个或多个字符组成的有限序列。一般记为:s=a1a2...an(n>=0)其中s是串的名,用单引号括起来的字符序列是串的值;串中字符的数目n称为串的长度。零个字符的串称为空串,它的长度为零。串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的称为该字符在串中的位置。子串在主串中的位置则以子串的第转载 2007-09-19 12:55:00 · 700 阅读 · 0 评论 -
串操作应用举例
对用户来讲,一个文本(文件)可以包括若干页,每页包括若干行,每行包括若干文字。对文本编辑程序来讲,可把整个文本看成一个长字符串,称文本串,页是文本串的子串,行又是页的子串。为简化程序复杂程度,可简单地把文本分成若干行。例:下面的一段源程序可以看成一个文本串,main(){float a,b,max;scanf("%f,%f",&a,&b);if (a>b) max转载 2007-09-20 09:18:00 · 1092 阅读 · 0 评论 -
遍历二叉树
一、复习二叉树的定义二叉树由三个基本单元组成:根结点、左子树、右子树问题:如何不重复地访问二叉树中每一个结点?二、遍历二叉树的三种方法:先序 1 访问根结点 2 先序访问左子树 3 先序访问右子树 中序 1 中序访问左子树 2 中序访问根结点 3 中序访问右子树 后序 1 后序访问左子树 2 后序访问右子树 3 访问根结点 三、递归法遍历二叉树先序:Statu转载 2007-09-23 01:28:00 · 546 阅读 · 0 评论 -
二叉树实验
一、二叉树的链式存储结构表示typedef struct BiTNode{TElemType data;struct BitNode *lchild,*rchild;}BiTNode,*BiTree;二、二叉树的链式存储算法实现CreateBiTree(&T,definition);InsertChild(T,p,LR,c);三、二叉树的递归法遍历Pr转载 2007-09-23 01:30:00 · 522 阅读 · 0 评论 -
实验八 排序实验
实现下述三种算法,并用以下无序序列加以验证:49,38,65,97,76,13,27,49一、简单插入排序二、快速排序三、堆排序以上算法的C源程序。#define MAXSIZE 20#define LT(a,b) ((a)typedef int KeyType;typedef int InfoType;typedef struct{ KeyType key;转载 2007-10-21 10:22:00 · 949 阅读 · 0 评论