数据结构总复习资料(完整版)

2018数据结构总复习第一章概论1.1数据结构的定义和分类1.数据结构的定义数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。

2.数据结构包括的内容(1)逻辑结构:数据元素之间的逻辑关系。

(2)存储结构:数据元素及其关系在计算机存储器内的表示。

(3)操作:数据的运算(检索、排序、插入、删除、修改)。

1.2为什么学习数据结构1.学习数据结构的作用(1)计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。

(2)同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。

(3)程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。

而好的算法在很大程度上取决于描述实际问题的数据结构。

2.电话号码查询问题(1)要写出好的查找算法,取决于这张表的结构及存储方式。

(2)电话号码表的结构和存储方式决定了查找(算法)的效率。

1.3算法的概念和特点1.算法的概念和特点算法是由若干条指令组成的有穷序列,具有以下特点:(1)输入:具有0个或多个输入的外界量。

(2)输出:至少产生1个输出。

(3)有穷性:每一条指令的执行次数必须是有限的。

(4)确定性:每条指令的含义都必须明确,无二义性。

(5)可行性:每条指令的执行时间都是有限的。

2.算法与程序的区别(1)一个程序不一定满足有穷性,但算法一定。

(2)程序中的指令必须是机器可执行的,而算法无此限制。

(3)一个算法若用机器可执行的语言来描述,则它就是一个程序。

1.4算法分析1.时间复杂度算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。

记作T(n)=O(f(n)),称O(f(n)) 为算法的渐近时间复杂度,简称时间复杂度。

算法效率的度量,采用时间复杂度。

常见函数的时间复杂度按数量递增排列及增长率:常数阶O(1)对数阶O(log2n)线性阶O(n)线性对数阶O(n log2n)平方阶O(n2)立方阶O(n3)……k次方阶O(n k)指数阶O(2n)2.空间复杂度空间复杂度是指算法在计算机内执行时所需存储空间的度量,记作:S(n) = O(f(n))。

3.算法分析的目的目的在于选择合适算法和改进算法1.5 例题例1:for ( i=1; i<n; i++ ) {y = y+1; //语句1for ( j=0; j<=(2*n); j++ )x++; //语句2}解:语句1频度为(n-1);语句2频度为(n-1)*(2n+1)=2n2-n-1,因此时间复杂度T(n)=2n2-2=O(n2)。

例2:i=1; //语句1while (i<=n)i=i*2; //语句2解:语句1频度为1;设语句2频度为f(n),则有2f(n)<=n,即f(n)<=log2n,去极大值,f(n)=log2n,因此时间复杂度T(n)=1+log2n=O(log2n)。

第二章线性表2.1 线性表的概念和运算1.线性表的概念线性表是 n (n≥0) 个类型相同的数据元素组成的有限序列。

其中数据元素的个数n为线性表的长度,当n=0时称为空表。

2.线性表的特点对于非空的线性表,有且仅有一个开始结点和一个终端结点;开始结点没有直接前趋,有且仅有一个直接后继;终端结点没有直接后继,有且仅有一个直接前趋;其余任何结点有且仅有一个直接前趋和一个直接后继。

3.线性表的计算(1) 置空表 SETNULL(L):将线性表L置为空表。

(2) 求长度 LENGTH(L):返回是线性表L中结点的个数。

(3) 取结点 GET(L, i ):当1 ≤ i ≤ LENGTH(L)时,返回线性表L中的第 i 个结点,否则返回NULL。

(4) 定位 LOCATE(L, x):当线性表L中存在一个值为x的结点时,结果是该结点的位置;若表L中存在多个值为x的结点,则返回首次找到的结点位置;若表L中不存在值为x的结点,则返回一个特殊值表示值为x的结点不存在。

(5) 插入 INSERT(L, x, i):在线性表L的第i个位置插入一个值为x的新结点。

这里1 ≤ i ≤ n+1,n是原表L的长度。

(6) 删除 DELETE(L, i):删除线性表L的第i个结点。

这里1 ≤ i ≤ n,n是原表L的长度。

2.2 线性表的存储结构1.顺序存储:(1)定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

简言之,逻辑上相邻,物理上也相邻。

(2)顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组来实现。

(3)地址计算:设首元素a1的存放地址为LOC(a1)(称为首地址),设每个元素占用存储空间(地址长度)为L字节,则地址计算公式:LOC(ai) = LOC(a1) + ( i-1)*L。

(4)结构定义:#define MAXSIZE 1024 //线性表的最大长度typedef int datatype; //线性表数据元素类型typedef struct{datatype data[MAXSIZE];int last; //指示线性表的终端结点在表中的下标值}sequenlist;2.链式存储:(1)特点:用一组任意的存储单元存储线性表的数据元素,利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素,每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息。

(2)头指针、头节点、开始节点头指针是指向链表中第一个结点(或为头结点或开始结点)的指针,单链表可由一个头指针唯一确定。

头结点是在链表的开始结点之前附设的一个结点;数据域内只放空表标志和表长等信息;开始结点是指链表中存储线性表第一个数据元素a1的结点。

(3)空表的表示无头结点时,当头指针的值为空时表示空表;有头结点时,当头结点的指针域为空时表示空表。

(4)结构定义typedef int datatype; //线性表数据元素类型typedef struct node {datatype data; //数据域struct node *next; //指针域} linklist;3.存储结构比较(1)优缺点顺序存储的优点是存储密度大(=1),存储空间利用率高。

缺点是插入或删除元素时不方便。

适合做查找这样的静态操作。

链式存储的优点是插入或删除元素时很方便,使用灵活。

缺点是存储密度小(<1),存储空间利用率低。

适合做做插入、删除这样的动态操作。

(2)线性表的顺序存储与链式存储对线性表的运算比较顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。

链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。

(3)时间复杂度和存储密度比较顺序存储存储密度=1,链式存储<1。

顺序表中访问任意一结点的时间复杂度均为O(1),但是在插入和删除时时间复杂度为O(n)。

链表时间复杂度为O(n)。

4.单链表操作(1)查找void findValue(Linklist *head ,int x){Linklist *t;t = head->next;while(t!=NULL && t->data !=x)t=t->next;if(t->data == x)printf("成功找到\n");elseprintf("没有找到\n");}(2)插入void insert(Linklist *head,int x){Linklist *t,*p;p = (Linklist*)malloc(sizeof(Linklist));p->data = x;t = head;while(t->next != NULL && t->next->data < x) t = t->next;if(t == head){p->next = head->next;head->next = p;}else if(t->next == NULL){t->next = p;p->next = NULL;}else{p->next = t->next;t->next = p;}}(3)删除void dele(Linklist *head){Linklist p ,q;p=head;while (p->next !=NULL){if (p->data !=p->next->data) p=p->next;else{ q=p->next; p->next=q->next; free(q);} }}(4)逆置void reverse(Linklist *head){Linklist *s,*t,*p;p = head;s = p->next;while(s->next != NULL) {t = s->next;s->next = p;p = s;s = t;}s->next = p;head->next->next = NULL;head->next = s;}2.3 例题例1:一个一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。

存储器按字节编址,设存储数组元素M[O]的第一个字节的地址是98,则M[3]的第一个字节的地址是 113 。

例2:在一个长度为n的顺序表中向第i个元素(1≤i≤n+1)之前插入一个新元素时,需要向后移动n-i+1 个元素(或删除第i个元素,需要向前移动 n-i 个元素)。

例3:在单链表中,若*p结点不是末尾结点,在其前或后插入*s结点或删除结点的操作是?解:在其前插入*s结点:s->next= p->next ; p->next=s; t=p->data; p->data=s->data ; s->data= t ;在其后插入*s结点:s->next=p->next; p->next=s;删除其前结点:需要利用遍历删除其后结点:q = p->next; p->next=q->next; free(q);删除自身接结点:q=p->next; p->data= q->data ; p->next=q->next ; free(q);例4:在线性表的下列存储结构中,读取指定序号的元素花费时间最少的是顺序结构。

合集下载

数据结构复习资料(亲自整理)

数据结构复习资料(亲自整理)

数据结构复习资料(亲自整理)1、链表是一种存储数据的链式结构,每个数据之间都是相关联的。

2、线性结构是一个有序数据元素的集合,包括线性表、栈、队列、双队列、数组和串。

3、树是由n(n>=1)个有限节点组成一个具有层次关系的集合,而二叉树是每个结点最多有两个子树的有序树。

二叉树与树的主要差别在于,二叉树结点的最大度数为2,而树中结点的最大度数没有限制;二叉树的结点有左、右之分,而树的结点无左、右之分。

4、堆是一种可以被看做一棵树的数组对象,总是满足某个节点的值总是不大于或不小于其父节点的值,且堆总是一棵完全二叉树。

5、二叉排序树是一种满足以下递归定义的二叉树:若左子树非空,则左子树所有节点的值均小于它的根节点;若右子树非空,则右子树所有节点的值均大于于它的根节点;左右子树也分别为二叉排序树。

1、在已知前序遍历和中序遍历的情况下,可以通过画树的方法求得后序遍历。

具体步骤如下:首先根据前序遍历的特点,确定根节点;然后观察中序遍历,将左子树和右子树分别确定下来;接着对左子树和右子树分别进行递归,直到遍历完所有节点,最后得到后序遍历。

2、树和二叉树之间可以相互转换。

将树转换为二叉树的方法是:对于每个节点,将其第一个孩子作为其左孩子,将其兄弟作为其右孩子。

将二叉树转换为树的方法是:对于每个节点,将其右孩子作为其兄弟。

3、二叉树线索化是将二叉树中的空指针指向该节点在中序遍历中的前驱或后继节点的过程。

在线索二叉树中,一个结点是叶结点的充要条件为:左、右标志均是1.4、邻接表是图的一种链式存储结构,用于表示图中每个节点的邻居节点。

每个节点都有一个链表,存储着与该节点相邻的节点。

邻接表是一种图的存储结构,对于每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边(对于有向图是以该顶点为尾的弧)。

邻接表中的表结点和头结点分别表示边和顶点,包含信息如下:表结点adjvex(邻接点)。

nextarc(指向下一个表结点)(权值等信息);头结点data(顶点信息)和firstarc(指向第一个表结点)。

数据结构总复习.docx

数据结构总复习.docx

数据结构总复习.docx数据结构总复习1?模式串t='abcaabbcabcaabdab',求该模式串的next数组和nextval数组的值。

2.求模式串P=4abaabcac,的next函数值和nextval函数值序列。

3.已知一?棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,画出该二叉树,并写出后序遍历序列。

4?某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E。

闹岀该二叉树,并写出先序遍历序列。

5.已知一个森林的先序序列和后序序列如下,请构造出该森林。

先序序列:ABCDEFGHIJKLMNO后序序列:CDEBFH1JGAMLONK6.一棵二叉树的先序、中序、后序序列如下,其屮一部分未标出,请构造出该二叉树。

先序序列:__CDE_GHI_K中序序列:CB__FA_JKIG后序序列:_EFDB_JIH_A7.一棵二叉树的先序、中序和后序序列分别如下,其中冇一部分为显示出来。

试求出空格处的内容,并画出该二叉树。

先序序列:_B F ICEH G中序序列:D KFIA EJC后序序列:K FBH J G A8.已知一棵二叉树的先序中序和后序序列如下,其屮空缺了部分,请画出该二叉树。

先序:_BC_EFG_IJK_中序:CBED_GAJ_H_L后序:_E_FD_J_L_HA9.已知含打8个结点的一减二叉树,按先序、屮序、后序进行遍历后,冇些结点序号不清楚如下图示。

要求构造出一棵符合条件的二叉树。

先根序遍历_23_5_78中根序遍历3 _4 1 _ 7 8 6后根序遍历_42__65 110.设冇正文MNOPPPOPMMPOPOPPOPNP,字符集为M, N, O, P,设计一套二进制编码,使得上述正文的编码最短。

11.给定一组数列(15,& 10,21,6,19,3)分别代表字符A,B,C,D,E,F,G 出现的频度, 试叙述建立哈夫曼树的算法思想,画岀哈夫曼树,给出各字符的编码值,并说明这种编码的优点。

大数据结构复习全资料

大数据结构复习全资料

数据结构(C++版)第一章绪论(1)数据结构+算法=程序(2)数据的逻辑结构:线性表,树,图等数据结构。

其核心是如何组织待处理数据以及数据之间关系。

(3)数据的存储结构:如何将线性表,树,图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。

(4)常用数据处理技术:包括查找技术,排序技术,索引技术等(5)数据元素是数据的基本单位,构成数据元素的不可分割的最小单位称为数据项。

(6)数据结构分为以下四类:集合(属于同一集合),线性结构(一对一),树结构(一对多),图结构(多对多)(7)数据的存储结构又称为物理结构。

(8)抽象数据类型——ADT:包括数据元素间的逻辑关系和操作声明(9)算法必须满足五个重要特性:输入,输出,有穷性,确定性,可行性(10)算法的描述方法:自然语言,流程图,程序设计语言,伪代码(11)算法的时间复杂度:算法中基本语句的执行次数在渐进意义下的阶,通常用O记号表示。

(12)算法的空间复杂度:算法的执行过程中,需要的辅助空间数量。

S(n)=O(f(n)) n为问题规模第二章线性表(1)线性表简称表,是n(n>=0)个具有相同数据元素的有限序列,线性表中数据元素的个数称为线性表的长度。

(2)元素a1无前驱,元素an无后继,其他元素有且仅有一个前驱和一个后继。

(3)线性表的存储结构称为顺序表。

(4)顺序表按位查找算法GetTemplate<class DataType>DataType SeqList <DataType>::Get (int i){If (i<1 && i>length) thow “查找位置非法“;Else return data[i-1];}(5) 顺序表按值查找算法LocateTemplate<class DataType>Int SeqList<DataType>::Locate(DataType x)For (i=0;i<length ;i++)If (data[i]==x) return i+1;Return 0;}(6) 顺序表的存储结构——单链表[1] 单链表的遍历算法PrintListTemplate<class DataType>Void LinkList<DataType>::PrintList (){p=first->next;while (p!=NULL){Cout<<p->data;P=p->next;}}[2] 单链表的按值查找算法LocateTemplate<class DataType>Int LinkList<DataType>::Locate(DataType x){P=frist ->next ;count=1;While(p!=NULL){If(p->data ==x) return count;P=p->next;Count++;}return 0;}[3] 单链表插入算法InsertTemplate<class DataType>Void LinkList <DataType>::Insert(int i;DataType x) {P=first;count=0;While (p!=NULL && count<i-1){P=p->next;Count++i;}If(p==NULL)throw“位置’’;Else {S=new Node;s->data=x;s->next=p->next;p->next=s;[4] 尾插法建立单链表LinkListTemplate<class DataType>LinkList <DataType>::LinkList (DataType a[], int n){First =new Node;R=first ;For(i=0;i<n;i++){s=new Node ;s->data=a[i];r->next=s;r=s;}r->next =NULL;}第三章栈和队列(1)栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底。

(完整版)数据结构知识点总结

(完整版)数据结构知识点总结

数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。

数据元素是数据的基本单位,可以由若干个数据项组成。

数据项是具有独立含义的最小标识单位。

数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。

·线性结构:一对一关系。

·线性结构:多对多关系。

·存储结构:是逻辑结构用计算机语言的实现。

·顺序存储结构:如数组。

·链式存储结构:如链表。

·索引存储结构:·稠密索引:每个结点都有索引项。

·稀疏索引:每组结点都有索引项。

·散列存储结构:如散列表。

·数据运算。

·对数据的操作。

定义在逻辑结构上,每种逻辑结构都有一个运算集合。

·常用的有:检索、插入、删除、更新、排序。

数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

·结构类型:由用户借助于描述机制定义,是导出类型。

抽象数据类型ADT:·是抽象数据的组织和与之的操作。

相当于在概念层上描述问题。

·优点是将数据和操作封装在一起实现了信息隐藏。

程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。

算法取决于数据结构。

算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。

评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。

时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。

渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。

评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。

算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

(完整版)数据结构知识点全面总结—精华版

(完整版)数据结构知识点全面总结—精华版

第1章绪论内容提要:◆数据结构研究的内容。

针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。

数据结构涵盖的内容:◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。

数据——所有能被计算机识别、存储和处理的符号的集合。

数据元素——是数据的基本单位,具有完整确定的实际意义。

数据对象——具有相同性质的数据元素的集合,是数据的一个子集。

数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为:Data_Structure=(D, R)数据类型——是一个值的集合和定义在该值上的一组操作的总称。

抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,它由基本的数据类型构成。

◆算法的定义及五个特征。

算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。

算法的基本特性:输入、输出、有穷性、确定性、可行性◆算法设计要求。

①正确性、②可读性、③健壮性、④效率与低存储量需求◆算法分析。

时间复杂度、空间复杂度、稳定性学习重点:◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。

◆用计算语句频度来估算算法的时间复杂度。

第二章线性表内容提要:◆线性表的逻辑结构定义,对线性表定义的操作。

线性表的定义:用数据元素的有限序列表示◆线性表的存储结构:顺序存储结构和链式存储结构。

顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。

通过指针来实现!◆线性表的操作在两种存储结构中的实现。

数据结构的基本运算:修改、插入、删除、查找、排序1)修改——通过数组的下标便可访问某个特定元素并修改之。

核心语句:V[i]=x;顺序表修改操作的时间效率是O(1)2) 插入——在线性表的第i个位置前插入一个元素实现步骤:①将第n至第i 位的元素向后移动一个位置;②将要插入的元素写到第i个位置;③表长加1。

数据结构复习要点(汇总版)

数据结构复习要点(汇总版)

第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。

2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。

(补充:一个数据元素可由若干个数据项组成。

数据项是数据的不可分割的最小单位。

)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

(有时候也叫做属性。

)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。

数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。

依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。

2.线性结构:结构中的数据元素之间存在“一对一“的关系。

若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。

3.树形结构:结构中的数据元素之间存在“一对多“的关系。

若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。

4.图状结构:结构中的数据元素存在“多对多”的关系。

若结构为非空集,折每个数据可有多个(或零个)直接后继。

(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。

想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。

逻辑结构可以映射为以下两种存储结构:1.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。

2.链式存储结构:借助指针表达数据元素之间的逻辑关系。

不要求逻辑上相邻的数据元素物理位置上也相邻。

(完整word版)数据结构复习要点(汇总版),推荐文档.docx

想要计算机处理数据, 就必须把数据的逻辑结构映射为数据的存储结构。 逻辑结构可以映射为以下两种存储结构:
1.顺序存储结构 :把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。不要求逻辑上相邻的数据元素物
3.树形结构 :结构中的数据元素之间存在“一对多“的关系。若数据为非空集,则除了第一
个元素 (根)之外,其它 每个数据元素都只有一个直接前驱, 以及多个或零个 直接后继。
4.图状结构 :结构中的数据元素存在“多对多”的关系。若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
结点定义:
typedef int datatype;//结点数据类型,假设为int
typedef struct node {//结点结构
datatype data;
struct node *next;//双向链表还应加上*previous
3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也
叫做属性。)
4.数据结构 :数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
2 / 13
插入:p->next=head->next;head->next=p;
输出:printf(“%d”,p->data);
删除:q=p->next;p->next = q->next ;free(q);

数据结构复习提纲(整理)

复习提纲第一章数据结构概述基本概念与术语(P3)1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的基本单位3.数据对象相同性质的数据元素的集合4.数据结构包括三方面内容:数据的逻辑结构.数据的存储结构.数据的操作. (1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据结构、二元组2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。

3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。

4、以下程序段的时间复杂度为___O(N2)_____。

int i,j,x;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1x+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表结构由n(n>=0)个具有相同性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表结构#define MAXSIZE 100typedef int DataType;Typedef struct{DataType items[MAXSIZE];Int length;}Sqlist,*LinkList;//初始化链表void InitList(LinkList *L){(*L)=(LinkList)malloc(sizeof(LNode));if(!L){cout<<”初始化失败!”;return;}(*L)->next=NULL;}//插入数据void InsertList(LinkList L,int pos,DataType x){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”插入位置错误”;return;}InitList(&q);q->next=p->next;p->next=q;q->data=x;}//销毁链表void DestoryList(LinkList L){LinkList t;while(L){t=L;L=L->next;free(t);}}//遍历链表void TraverseList(LinkList L){LinkList t=L;while(L){t=t->next;cout<<t->data<<” ”;}cout<<endl;}//删除元素void DeleteList(LinkList L,int pos){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”删除位置错误!!”;return;}q=p->next;p->next=q->next;free(q):}第三章栈和队列1.栈(1)栈的结构与定义(2)顺序栈操作算法:入栈、出栈、判断栈空等(3)链栈的结构与定义2.队列(1)队列的定义----------------------------------------------------------------------------------------------------------------1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A. BCDAEB. EDACBC. BCADED. AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A. TOP==STACKSIZEB. TOP==1C. TOP==0D. TOP==-13、允许在一端插入,在另一端删除的线性表称为____队列____。

(完整word版)大学数据结构期末知识点重点总结(考试专用)

第一章概论1。

数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算2。

数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R)结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系3.数据类型a。

基本数据类型整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b。

复合数据类型复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)5。

四种基本存储映射方法:顺序、链接、索引、散列6。

算法的特性:通用性、有效性、确定性、有穷性7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化8.渐进算法分析a.大Ο分析法:上限,表明最坏情况b.Ω分析法:下限,表明最好情况c.Θ分析法:当上限和下限相同时,表明平均情况第二章线性表1.线性结构的基本特征a.集合中必存在唯一的一个“第一元素”b。

集合中必存在唯一的一个“最后元素"c.除最后元素之外,均有唯一的后继d。

除第一元素之外,均有唯一的前驱2.线性结构的基本特点:均匀性、有序性3。

顺序表a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度b。

线性表中任意元素的存储位置:Loc(ki)= Loc(k0)+ i * L(设每个元素需占用L个存储单元)c. 线性表的优缺点:优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样缺点:空间难以扩充d.检索:ASL=【Ο(1)】e。

070109数据结构-20

《数据结构》课程综合复习资料一、填空题1、数据在计算机中的存储只有两种形式,一种是数据元素逐个连续存放,通过物理相邻来确定关系,这种存储方式称为()存储;另一种是数据元素任意存放,通过存储地址确定关系,这种存储方式称为()存储。

2、数据结构的四种基本形式为()、()、()和()。

3、以数据元素划分,线性表分为()、()、()和()。

4、当且仅当两个串的()相等并且各个对应位置上的字符都()时,这两个串相等。

一个串中任意个连续字符组成的序列称为该串的()串,该串称为它所有子串的()串。

5、广义表L=(( ), (e), ( a, ( b, c, d ) ) )的长度为(),深度为(),表头为(),表尾为()。

6、如果将一棵有n个结点的完全二叉树按层编号,则对任一编号为i(1<=i<=n)的结点X有:若i=1,则结点X是根结点;若i〉1,则X的双亲PARENT(X)的编号为()。

若2i>n,则结点X无左孩子且无右孩子;否则,X的左孩子LCHILD(X)的编号为()。

若2i+1>n,则结点X无右孩子;否则,X的右孩子RCHILD(X)的编号为()。

7、数据结构是()。

8、一个算法应具有()、()、()、()、()五个特性。

9、在线性表的顺序存储结构中,逻辑上相邻的数据元素的物理位置(),在链式存储结构中,逻辑上相邻的数据元素的物理位置()。

10、在栈顶进行插入运算,被称为(),在栈顶进行删除运算,被称为(),出栈和取栈顶数据元素的不同在于()。

11、一维数组的逻辑结构是线性结构,存储结构是();对于二维或多维数组,分为按()和()两种不同的存储方式。

12、数据的逻辑结构被分为()、()、()和()四种。

13、算法设计的评价标准为()、()、()、()。

14、在线性表的单链接存储中,若一个元素所在结点的地址为p,则其后继结点的地址为(),若假定p为一个数组a中的下标,则其后继结点的下标为()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档