浙江省计算机三级数据库复习资料

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

数据结构基础

1)数据结构的基本概念及有关术语:

数据是描述客观事物的数字、字符以及所有能输入到计算机中并能被计算机接受的各种符号集合的统称。

表示一个事物的一组数据称为一个数据元素,数据元素是数据的基本单位。它可以是一个不可分割的原子项,也可以由多个数据项组成。

数据类型是指一个类型和定义在这个类型上的操作集合。

数据结构(data structure)指数据元素之间存在的关系

数据的逻辑结构是指数据元素之间的逻辑关系,用一个数据元素的集合和定义在此集合上的若干关系来表示,常被称为数据结构。

根据数据元素之间逻辑关系的不同数学特性,数据结构可分为三种:线性结构、树结构和图,其中树结构和图又称为非线性结构。P2

数据元素及其关系在计算机中的存储表示或实现称为数据的存储结构,也称为物理结构。数据的逻辑结构从逻辑关系角度观察数据,与数据的存储无关,是独立与计算机的。而数据的存储结构是逻辑结构在计算机内存中的实现,是依赖于计算机的。

数据存储结构的基本形式有两种:顺序存储结构和链式存储结构。

数据的存储结构被分为顺序结构、链接结构、索引结构、散列结构四种

算法是一个有穷规则的集合,其规则确定一个解决某一特定类型问题的操作序列。

算法分析主要包含时间代价和空间代价两个方面。

时间代价就是当问题的规模以某种单位由1增至n时,解决该问题的算法实现运行时所消耗的时间,也以某种单位由f(1)增至f(n),则称该算法的时间代价为f(n)。

空间代价就是当问题的规模以某种单位由1增至n时,解决该问题的算法实现运行时所消耗的空间,也以某种单位由g(1)增至g(n),则称该算法的空间代价为g(n)。

算法的时间及空间复杂性

度量算法的时间效率

算法的时间效率指算法的执行时间随问题规模的增长而增长的趋势,通常采用时间复杂度来度量算法的时间效率。T(n)=O(f(n))

度量算法的空间效率

空间复杂度指算法在执行时为解决问题所需要的额外内存空间,不包括输入数据所占用的存储空间。 S(n)=O(f(n))

2)基本数据结构及其操作:

线性表是由n(n>=0)个类型相同的数据元素a0,a1,…,a(n-1)组成的有限序列。P36 线性表的逻辑结构:

其中,元素ai的数据类型可以是整数、浮点数、字符或类;n是线性表的元素个数,称为线性长度。若n=0,则为空表;若n>0,ai(0

线性表的存储结构(顺序存储、链式存储)

线性表的顺序存储结构使用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存放次序与它们在线性表中的逻辑次序相同,即元素ai与其前驱a(i-1)及后继a(i+1)的存储位置相邻。顺序存储的线性表也称为顺序表。

线性表的链式存储是用若干地址分散的存储单元存储数据元素,逻辑上相邻的数据元素在物理位置上不一定相邻,必须采用附加信息表示数据元素之间的顺序关系。

插入、删除操作

单链表的插入操作:

①空表插入/头插入

if(head==null)

head=new Node(x,null); //空表插入

else

{

Nodeq= new Node(x,null); //头插入

q.next=head;

head=q;

}

②中间插入/尾插入

Nodeq= new Node(x,null);

q.next=p.next;

p.next=q;

单链表的删除操作:

③头删除

head = head.next;

④中间/尾删除

if (p.next!=null)

p.next = p.next.next;

双链表的插入操作:

q = new DLinkNode(x);

q.prev = p.prev;

q.next = p;

p.prev.next = q;

p.prev = q;

双链表的删除操作:

p.prev.next = p.next;

if (p.next!=null)

(p.next).prev = p.prev;

3)数组是一种数据结构,数据元素具有相同的数据类型。

数组逻辑结构与存储结构的关系:数组采用的是顺序存储结构,即使用一组连续的内存单元依次存放线性表的数据元素,元素在内存的物理存放次序与它们在线性表中的逻辑次序相同,即元素ai与其前驱a(i-1)及后继a(i+1)的存储位置相邻。所以数组的存储结构表现其存储结构。

4)栈是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行。允许操作的一段称为栈顶,不允许操作的一端称为栈底。栈中插入元素的操作称为入栈,删除元素的操作称为出栈。没有元素的栈称为空栈。栈的插入和删除只允许在栈顶进行,每次入栈即成为当前栈顶元素,每次出栈元素总是最后一个入栈元素,因此栈也称为后进先出表。

逻辑结构

存储结构

采用顺序存储结构的栈称为顺序栈,采用链式存储结构的栈称为链式栈。

进栈、出栈操作:链式栈使用单链表即可,不需要使用循环链表或双链表,并且头结点的作用不明显。采用不带头结点的单链表实现栈。单链表的第一个结点为站定结点,设top指向栈顶结点,入栈操作是在当前栈顶结点之前插入新结点;出栈操作是删除栈顶结点并返回栈顶元素值,再使top指向新的栈顶结点。

5)队列是一种特殊的线性表,其插入和删除操作分别在线性表的两端进行。允许入队的一端称为队尾,允许出队的一端称为队头。向队列中插入元素的过程成为入队,删除元素的过程成为出队。没有元素的队列称为空队列。由于插入和删除操作分别在队尾和队头进行,最先入队的元素总是最先出队,因此队列也称为先进先出表。

逻辑结构

存储结构

采用顺序存储结构的栈称为顺序队列,采用链式存储结构的栈称为链式队列。

循环队列:如果循环使用顺序队列的连续存储单元,则将顺序队列设计成在逻辑上首尾相接的循环结构,称为顺序循环队列。

进队、出队操作:以不带头结点的单链表实现链式队列。设指针front和rear分别指向队头和队尾结点,入队操作将结点链在队尾结点之后,并使front指向新的队尾结点;出队操作,当队列不空时,取得队头结点值,删除该节点,并使front指向后续结点。

6)二叉树是n(n>=0)个结点组成的有限集合,n=0时称为空二叉树;n>0的二叉树由一个根结点和两棵互不相交的、分别称为左子树和右子树的子二叉树构成。二叉树也是递归定义的。

二叉树的性质

性质1:若根结点的层次为1,则二叉树第i层最多有2i-1(i≥1)个结点。

性质2:在高度为k的二叉树中,最多有2k-1个结点(k≥0)。

性质3:设一棵二叉树的叶子结点数为n0,2度结点数为n2,则n0=n2+1。

性质4:一棵具有n个结点的完全二叉树,其高度。

性质5:一棵具有n个结点的完全二叉树,对序号为i (0≤i<n)的结点,有:

①若i=0,则i为根结点,无父母结点;若

i>0,则i的父母结点序号为。

②若2i+1<n,则i的左孩子结点序号为2i+1;

否则i无左孩子。

③若2i+2<n,则i的右孩子结点序号为2i+2;

相关文档
最新文档