当前位置:文档之家› 数据结构

数据结构

数据结构
数据结构

第一章

数据结构

数据:数据(data)是对客观事物的符号表示,在计算机中是能够输入到计算机中并被计算机程序处理的符号的总称。

数据元素(data element)是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可又若干个数据项(data item)组成。例如,一本书的书目信息是一个数据元素,而书目信息中每一项(书名,作者)为数据项。

数据对象(data object):数据对象是性质相同的数据元素的集合,是数据的一个元素。

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

数据元素之间的关系的不同特征,通常有4中结构:

(1)集合:结构中的数据元素之间除了“同属于一个集合”的关系之外,别无其他关系。(2)线性结构:结构中的数据元素存在一对一的关系。

(3)树形结构:结构中的数据元素之间存在一个对应多个的关系。

(4)图形结构或网状结构:结构中的数据元素存在多个对应多个的关系。

数据结构的形式定义为:Data_Structure(D,S)(二元组)

D;是数据元素的有限集,S是D上关系的有限集。

逻辑结构:结构中定义的“关系”描述的是数据元素之间的逻辑关系,因此称为逻辑结构。

存储结构:数据在计算机中的表示(映像)称为数据的物理结构(存储结构)。在计算机中表示信息的最小单位是二进制数的一位,叫做位(bit)。在计算机中我们可以用一个若干位组合起来形成的一个位串(字节)表示一个数据元素(结点node),当数据元素有若干数据项组成时,位串中对应与各个数据项的子位串称为数据域(data field)。因此元素或结点可以看做是数据元素在计算机中的映像。

数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像(顺序存储结构)和非顺序映像(链式存储结构)。

顺序映像:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

非顺映像:借助指示元素存储地址的指针表示数据元素之间的逻辑关系

(例子)

在用高级语言编程的程序中,每个变量,常量或表达式都有一个它所属的确定的数据类型。类型明显或隐含地规定了在程序执行期间变量或表达式所有可能的取值范围,以及这些值上允许进行的操作。因此数据类型是一个值的集合和定义在这个值上的一组操作的总称。

从某种意义上说,数据结构可以看成是“一组具有相同结构的值”,则结构类型可以看成有一种数据结构和定义在其上的一组操作组成。

抽象数据类型(Abstract Data Type ADT)是指一个数据模型以及定义在该数据模型上得一组操作。

为了提高代码的复用率,在近代程序设计方法学中指出,一个软件系统的框架应该建立在数据上,而不是建立在操作之上。在构成软件系统的每个独立的模块之上,定义一组数据和施与这些数据上的依序操作,并在模块内部给出这些数据的表示以及其操作的细节。

一个抽象数据类型的软件模块通常应包含定义,表示和实现3个部分。

抽象数据类型的定义由一个值域和定义在该值域上得一组操作组成。

原子类型固定聚合类型可变聚合类型

抽象数据类型可用以下三元组表示(D,S,P)

D是数据对象S是D上得关系集P是对D的基本操作集

ADT抽象数据类型名

{

数据对象:<数据对象的定义>

数据关系:<数据关系的定义>

基本操作:<基本操作的定义>

}

C中扩充

(1)预定义常量和类型

//函数结果状态代码

# define TRUE 1

#define FALSE 0

# define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

//status 是函数额类型,其值是函数结果状态代码

Typedef int status

(2)数据结构的表示(存储结构)用类型定义(typedef)描述。数据元素类型约定为ElemType,由用户在使用该数据类型时自行定义。

(3)基本操作的算法可以用以下形式的函数描述:

函数类型函数名(函数参数表列)

{

//算法说明

语句序列

//函数名

}

算法中使用的辅助变量可以不做变量说明,必要时对其作用赋予注释。一般而言,a,b,c,b,e 用作指针的变量名,i,j,k,l,m,n等用作整型变量名,p,q,r用作指针变量名,当函数返回值为函数结果状态代码时,函数定义为status类型。除了值调用方式外,增添了c++语言的引用调用的参数传递方式,在形参表中,以&打头的参数即为引用参数。

(4)赋值语句

简单赋值变量名= 表达式;

串联赋值变量名1= 变量名2 = 变量名3····

成组赋值(变量名1,······变量名k)=(表达式1,·······表达式k)

结构名= 结构名;

结构名= (值1,值2·····值k)

变量名[]= 表达式;

变量名[起始下标····终止下标] = 变量名[起始下标····终止下标]

变换赋值变量名<----->变量名

条件赋值变量名= 条件表达式?表达式T:表达式F;

/*

实验:输入一组整型元素序列,建立一个单链表, ? ?实现该单链表的遍历;在该单链表中查找某一元素,查找成功返回,否则返回; ? ?在该单链表中插入和删除某个元素。 */ ?

#include"stdio.h" ?

#include"stdlib.h" ?

# include"stdafx.h"

#define OVERFLOW -2

#define OK 1

#define ERROR 0

#define NULL 0

?

typedef int ElemType;

typedef int Status;

//单链表存储结构 ?

?

typedef struct Node

{ ?

? ?ElemType ata; ?

? ?struct Node next; ?

}LNode,*LinkList; ?

?

LinkList ; ?

?

//初始化一个空的单链表 ?

Status nitLinkList(LinkList L){ ?

? ?L=(LinkList)malloc(sizeof(LNode)); ? ? ?if(!L) xit(OVERFLO W); ?

? ?L->next=NULL; ?

? ?return K; ? ? ? ? } ?

/* ? ?下面是两中创建单链表的方法, ? ?此程序使用的是第二

种....

选择哪种,自己可以体验下 */ ?

?

//创建单链表,这种方法创建时把添加的数据插入到表头 ?

void reateLinkList(LinkList L) ?

{ ?

? ?int ; ?

? ?printf("为单链表添加数据,输入退出:\n");

scanf("%d",&x);

while(x){

p=(LinkList)malloc(sizeof(LNode));

p->data=x;p->next=L->next;L->next=p; //x非零时,生成一个结点并插入到表头。 ?

? ? ? ?scanf("%d",&x); ?

? ?} ? ? ? ? ? ? ? ? ? ? ? ?

} ?

?

//创建单链表,这种方法创建时把添加的数据插入到表尾 ?

void reateLinkList_2(LinkList L) ?

{ ?

? ?LinkList ,r; ?

? ?int ; ?

? ?r=L; ?

? ?printf("为单链表添加数据,输入退出:\n");

scanf("%d",&x);

while(x){

p=(LinkList)malloc(sizeof(LNode));

p->data=x;p->next=NULL;

r->next=p;r=p; //x非零时,生成一个结点并插入到表尾。 ? ? ? ? ?scanf("%d",&x); ?

? ?} ? ? ?

} ?

?

//遍历单链表 ?

void rintLinkList(LinkList ) ?

{ ?

? ?p=L->next; ?

? ?printf("单链表中数据如下:\n");

while(p)

{

printf("%4d",p->data); //通过链表的遍历来输出链表中的信息 ?

? ? ? ?p=p->next; ?

? ?} ?

? ?printf("\n"); ?

} ?

?

//计算单链表长度,并返回长度 ?

Status istLength(LinkList ) ?

{ ?

? ?int ength=0; ?

? ?p=L->next; ?

? ?while(p!=NULL){ ?

? ? ? ?p=p->next; ?

? ? ? ?length++; ?

? ?} ?

? return ength; ?

} ?

?

//查找位置为i的数值 ?

void etElem_L(LinkList ,int ) ? { ?

? ?int =0; ?

? ?p=L; ?

? ?printf("请输入你要查找数据的位置:"); scanf("%d",&i);

while((p->next !=NULL)&&(j

p=p->next;

j++;

}

if(i==j)

printf("你查找的数据为:%5d\n",p->data);

else

printf("没有你所要查找的数据\n");

}

//查找某一元素的位置并输出 ?

void ocateElem_L(LinkList ,int ) ?

{ ?

? ?p ->next; ?

? ?int ount=1; ?

? ?int length=0; ?

? ?while(p!=NULL){ ?

? ? ? ?if(p->data = ){ ?

? ? ? ? ? ?p=p->next; ?

? ? ? ? ? ?count++; ?

? ? ? ?} ?

? ? ? ?else ? ? ? ? ? ? ?break; ?

? ?} ?

? ?length istLength(L); ?

? ?if(count<=length) ?

? ? ? ?printf("你所查找数据的位置为:%d\n",count); }else {

printf("查找无效\n");

}

}

//删除某一位置的元素 ?

void istDelete(LinkList ,int ) ? { ?

? ?int =1; ?

? ?LinkList ; ?

? ?p=L->next; ?

? ?while(j

? ? ? ?p=p->next; ?

? ? ? ?j++; ?

? ?} ?

? ?s=p->next; ?

? ?p->next=s->next; ?

? ?free(s); ?

? ?PrintLinkList(L); ?

} ?

//删除指定数据 ?

Status istDelete_L(LinkList , lemType ) ?

{ ?

? ?LinkList ; ?

? ?q=L; ?

? ?p=L->next; ?

? ?while(p & ->data!=x) ?/*查找元素值为x的结点的位置,p指向它*/

{

q=p;

p=p->next;

}

if(p) /*找到了元素值为x的结点*/

{

q->next=p->next; /* 删除结点p */

free(p); /* 释放被删除元素的空间 */ ?

? ? ? ?return K; ? ? ? ? ?/* 成功删除元素值为x的结点,返回 ? ? urn链存值结回? ?

//在单链表中插入数据 ?

Status istInsert(LinkList , int , lemType ) ?

? ?LinkList ; ?

? ?int ; ?

? ?p=L; ?j=0; ?

? ?while(p&&

? ?{ ?

? ? ? ?p=p->next; ++; ?

? ?} ?

? ?if(!p||j>i-1) return RROR; ? ? ?//插入位置i不合法 ?

? ?s=(LinkList)malloc(sizeof(LNode)); ?//为插入元素分配存储空间 ?

? ?s->data=e; ?

? ?s->next=p->next; ? ? ? ? ? ? //插入到p结点的后面 ?

? ?p->next=s; ?

? ?return K; ?

} ?

?

//主方法 ?

void _tmain(int argc, _TCHAR* argv[])

{

? ?int enu;//菜单输入数值 ?

? ?int ,j;//查找数据的位置i,输入的数值j

LinkList L;

do{

printf("\n");

printf("\n");

printf("\n");

printf(" ************实验二***************\n");

printf("\n");

printf(" 1.建立一个单链表\n");

printf(" 2.遍历新建立的单链表\n");

printf(" 3.根据位置查找单链表中的元素\n");

printf(" 4.根据数值查找单链表中的元素的位置\n"); printf(" 5.删除单链表中指定位置的节点\n");

printf(" 6.删除值为**的节点\n");

printf(" 7.在单链表中插入数据\n");

printf(" 0.退出\n");

printf("\n");

printf(" *********** Author:ZMH ************\n"); printf("\n请输入所选菜单(-7):");

printf("\n");

scanf("%d",&menu);

if(menu<0 || menu>8){

printf("输入无效\n");

}

else

{

switch(menu)

{

case 1:InitLinkList(L);CreateLinkList_2(L);break; case 2:PrintLinkList(L);break;

case 3: GetElem_L(L,j);break;

case 4:printf("请输入你要查找数据的值:");

scanf("%d",&j);

LocateElem_L(L,j);break;

case 5:printf("请输入你要删除数据的位置");

scanf("%d",&i);

ListDelete(L,i);

break;

case 6:printf("请输入你要删除的数据的值:\n"); scanf("%d",&j);

if(ListDelete_L(L,j) == 1){

printf("删除成功!");

PrintLinkList(L);

}else{

printf("删除失败!");

}

break;

case 7:printf("请输入你要插入数据的位置:"); scanf("%d",&i);

if(i>ListLength(L)){

printf("输入位置无效!");

break;

}else{

printf("请输入你要插入的数据:");

scanf("%d",&j);

ListInsert(L, i, j);

PrintLinkList(L);

}

break;

case 0:

//exit(0);

exit(0);

}

}

}while(menu); }

数据结构整理完整版

第二章线性表 一、顺序表和链表的优缺点 1.顺序表 定义:用一组连续的存储单元(地址连续)依次存放线性表的各个数据元素。即:在顺序表中逻辑结构上相邻的数据元素,其物理位置也是相邻的。 优点 逻辑相邻,物理相邻 可随机存取任一元素 存储空间使用紧凑 缺点 插入、删除操作需要移动大量的元素(平均约需移动一半结点,当n很大时,算法的效率较低) 预先分配空间需按最大空间分配,利用不充分 表容量难以扩充 2.链式存储结构 定义:由分别表示a1,a2,…,a i-1,a i,…,a n的N 个结点依次相链构成的链表,称为线性表的链式存储表示 优势: (1)能有效利用存储空间; 动态存储分配的结构,不需预先为线性表分配足够大的空间,而是向系统“随用随取”,在删除元素时可同时释放空间。 (2)用“指针”指示数据元素之间的后继关系,便于进行“插入”、“删除”等操作; 插入或删除时只需要修改指针,而不需要元素移动。 劣势: (1)不能随机存取数据元素; (2)丢失了一些顺序表的长处,如线性表的“表长”和数据元素在线性表中的 “位序”,在单链表中都看不见了。如,不便于在表尾插入元素,需遍历整个表才能找到插入的位置。 二、单链表中删除一个节点和插入一个节点的语句操作,p29 1.插入元素操作 算法基本思想:首先找到相应结点,然后修改相应指针。 假定在a,b之间插入结点X,s指向X, p指向a,指针修改语句为: s->next=p->next; p->next =s;

2.删除元素操作 算法基本思想:首先找到第i-1 个结点,然后修改相应指针。 删除b结点,其中,P指向a,指针修改语句为:p->next=p->next->next; 三、单链表的就地逆置习题集2.22 算法的基本思想:以单链表作存储结构进行就地逆置的正确做法应该是:将原链表的头结点和第一个元素结点断开(令其指针域为空),先构成一个新的空表,然后将原链表中各结点,从第一个结点起,依次插入这个新表的头部(即令每个插入的结点成为新的第一个元素结点)。 算法思路:依次取原链表中的每个结点,将其作为第一个结点插入到新链表中去,指针p用来指向当前结点,p为空时结束。 void reverse (Linklist H){ LNode *p; p=H->next; /*p指向第一个数据结点*/ H->next=NULL; /*将原链表置为空表H*/ while (p){ q=p; p=p->next; q->next=H->next; /*将当前结点插到头结点的后面*/ H->next=q; } } 第三章栈和队列 一、栈和队列的特性 1.特点 栈必须按“后进先出”(LIFO)的规则进行操作,仅限在表尾进行插入和删除的操作。 队列(FIFO)必须按“先进先出”的规则进行操作,队尾插入,队头删除。 二、循环队列为空和满的判定方法,p63 队空条件:front == rear; 队满条件:(rear + 1) % maxSize == front

广州大学专插本心得

本人是今年考上广州大学计算机专业的,说真的,专插本这条路并不好走,很辛苦!但是当你知道自己考上了,那感觉是相当激动的!! 2011年高考成绩揭晓,我就过了3A二分而已,那时候心情很沉重,只有3条路可以选择,第一是复读第二就是读3A尾的学校第三就是去打工,最后的抉择是报了中山火炬技术学院(全省专科不知道是倒数第二还是倒数第三的学校) 2011年九月带着沉重的心情来到了中山火炬技术学院,这学校名气小的可怜,问了N多人都没人知道这学校,学校也小的可怕,十几分钟就可以走完,当时感觉自己很悲剧,上了这样的学校很没面子,因此痛下决心来不管怎么样要往上爬,从一个师兄那里听说可以插本,考到的话第一学历是本科,但是听说插本很难,比高考,考研究生还要难上百倍,便没怎么想插本了,还是专心学好大专的专业吧 一转眼,2年过去了,到了大三,很多同学都去实习了,我又一次走到人生十字路口上,是去工作还是去插本,经过几天考虑还是决定插本了,因为第一我觉的要进好的企业需要本科第二我不想那么快工作,那时候作出插本决定已经是9月底了,中山火炬技术学校插本的人很少,所以只好通过加插本QQ群来了解插本信息 因为本人不想给家庭负担所以没有参加任何培训班,刚开始复习全靠自己摸索着的,很痛苦,哪里是重点哪里不是重点都不知道,幸亏在进群之后知道考纲这回事,慢慢的走上了复习的正规道路,每天8点就起来看书,除开吃饭上厕所什么的离开一下教室其他都是在教室看书,一直看到晚上10点钟,回到宿舍继续看书,因为宿舍没人,所以看到2点左右才睡觉,每个星期抽出半天去放松,这样才能保证效率,那时候备考时候真是很无聊很痛苦,知道不少人都已经放弃了,但是还是坚持到最后,3月去广州考试,看见考广大计算机人400多人,心里有点怕怕的,但是马上调整好心态,心里说怕什么,大不了考不上去工作呢,在考试那2天就浏览一下书本和总结的考点,考完也不去想考试结果,因为没有什么意义了,四月八出成绩了,当时心里发毛了,因为说不担心那是假的,我是先要我舍友帮我查的,她说过了,我还是担心,最后自己鼓起勇气查的,当我点一下鼠标的那一刻眼睛是闭着的,闭了好久才敢看成绩。当时自己惊叫了起来:过了过了,战争终于结束了。自己也没想到会考的这么好,它见证了我几个月的付出是值得的好了,啰嗦了那么多,不知道说了这么多大家看了是什么心情,写的乱七八糟的,不过都是个人真实感受,现在就分享一下我各科复习经验吧 政治 这个是最恶心的科目,我用最多时间来备考这科,因为高中读的是理科,对它不感冒,但是考了67分,虽然不是很高分,但是我已经很满足了,现在谈谈这科复习方法,我10月开始看政治书的,一天一章的看,看到11月,看了大概四次书本,你会问为什么要看书,很简单,因为政治选择题很坑爹,不少题目是书本的,但是考纲没有的,12月开始之后,我就根据录音去划书,整理笔记,然后开始背,每个白天抽3小时背政治,然后晚上回宿舍打开电脑用 1小时选择题,培养做题感觉,到一月中,开始做历年真题,并把考过的大题给划掉,重点背那些没出的,没背熟的反复的背和默写,要是你学我这样做,我想政治可以个满意的分数。 英语

《数据结构》基本概念

《数据结构》基本概念

基本概念 ?数据 数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。 ?数据元素 数据元素也称为结点,是表示数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 ?数据项 数据项是构成数据元素的不可分割的最小单位。?数据对象 数据对象是具有相同性质的数据元素的集合,是数据的子集。 注意:在不产生混淆的情况下,将数据对象简称为数据。 ?数据结构 数据结构是指相互之间存在一定关系的数据元素的集合,即数据结构是一个二元组DataStructure = (D, R),其中D是数据元素的集合,R是D上关系的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。 ?数据的逻辑结构 数据的逻辑结构是指数据元素之间逻辑关系的整体。

根据数据元素之间逻辑关系的不同,数据结构分为四类: ⑴集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系; ⑵线性结构:数据元素之间存在着一对一的线性关系; ⑶树结构:数据元素之间存在着一对多的层次关系; ⑷图结构:数据元素之间存在着多对多的任意关系。 注意:数据结构分为两类:线性结构和非线性结构。?数据的存储结构 数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。通常有两种存储结构:顺序存储结构和链接存储结构。 顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。 链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。 注意:存储结构除了存储数据元素之外,必须存储数据元素之间的逻辑关系。 ?抽象数据类型 抽象数据类型是一个数据结构以及定义在该结构上

(完整版)非常实用的数据结构知识点总结

数据结构知识点概括 第一章概论 数据就是指能够被计算机识别、存储和加工处理的信息的载体。 数据元素是数据的基本单位,可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。 数据结构的定义: ·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。 ·线性结构:多对多关系。 ·存储结构:是逻辑结构用计算机语言的实现。·顺序存储结构:如数组。 ·链式存储结构:如链表。 ·索引存储结构:·稠密索引:每个结点都有索引项。 ·稀疏索引:每组结点都有索引项。 ·散列存储结构:如散列表。 ·数据运算。 ·对数据的操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。 ·常用的有:检索、插入、删除、更新、排序。 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。 ·结构类型:由用户借助于描述机制定义,是导出类型。 抽象数据类型ADT:·是抽象数据的组织和与之的操作。相当于在概念层上描述问题。 ·优点是将数据和操作封装在一起实现了信息隐藏。 程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。算法取决于数据结构。 算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。 评价算法的好坏的因素:·算法是正确的; ·执行算法的时间; ·执行算法的存储空间(主要是辅助存储空间); ·算法易于理解、编码、调试。 时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。 渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。 评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。 算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。 时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O (n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

《数据结构》(专科)已完成

数据结构,专科 一、简答题( 1、假设一个有向图的顶点集合V={c1,c2,c3,c4,c5},弧集 S={,,,,,}, (1)试根据上述关系,画出该有向图;(2)该图有环吗?若无 环,则写出它的一个拓扑有序序列;若有环,请写出组成环的顶点序列。 答: 2、已知某二叉树的先序序列为{ ABHFDECKG },中序序列为 { HBDFAEKCG }, 画出该二叉树。 答:二叉树是 a / \ b e / \ \

h f c / / \ d k g 后序是hdfbkgcea 3、已知关键字序列{70,83,100,65,10,9,7,32},现对其 从小到大排序,写出快速排序每一趟结束时的关键字状态。 答#include int main() { int i,j,t; int a[7]={70,83,100,65,10,32,7,9}; for(j=0;j<6;j++)//进行6次循环 for(i=0;i<6-j;i++)// 每次实现6-j次循环 if(a[i]>a[i+]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; }//每次a[i]与a[i+1]比较,大的就调换两者位置 for(i=0;i<7;i++) printf("%d ",a[i]); }

譬如第一次结果就是70,83,100,65,10,32,7,9 70比83小,所以位置没变。。 4、设s="I AM A WORKER",t=" GOOD",q=" WORKER"。求: StrLength(s),StrLength(t) ,SubString(s,8,6) , Index(s,q,1) 。 答:strlength(s)=14;strlength(t)=4;substr(s,8,6)=worker;substr(s,q,1)=o; 5、在单链表中设置头结点有什么作用? 答:头结点就是在单链表的开始结点之前附加的一个结点,设置头结点的优点有两个:(1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其他位置上一样,无须进行其他特殊处理;(2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就一样了。 6、设哈希函数H(key)=key MOD 13,用线性探测再散列法解决 冲突。对关键字序列{ 55,19,01,68,23,27,20,84 } 在地址空间为0-10的散列区中建哈希表,画出此表,并求等 概率情况下查找成功时的平均查找长度。

数据结构概念名词解释大全

数据:是对客观事物的符号表示。 数据元素:是数据的基本单位,也称节点(node)或记录(record)。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。 数据项:有独立含义的数据最小单位,也称域(field)。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 根据数据元素间关系的基本特性,有四种基本数据结构集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。 线性结构:结构中的数据元素之间存在一个对一个的关系。 树形结构:结构中的数据元素之间存在一个对多个的关系。 图状结构或网状结结构:结构中的数据元素之间存在多个对多个的关系。 逻辑结构:抽象反映数据元素之间的逻辑关系。(算法设计)物理结构(存储结构):数据结构在计算机中的表示。(算法实现) 存储结构分为: 顺序存储结构:借助元素在存储器中的相对位置来表

示数据元素间的逻辑关系。 链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系。 算法:对特定问题求解步骤的一种描述。 算法的五个重要特性:有穷性,确定性,可行性,输入和输出。 算法设计的原则或要求:正确性,可读性,健壮性,效率与低存储量需求。 衡量算法效率的方法:事后统计法和事前分析估算法。 算法执行时间的增长率和 f(n) 的增长率相同,则可记作:T (n) = O(f(n)),称T (n) 为算法的(渐近)时间复杂度算法运行时间的衡量准则:以基本操作在算法中重复执行的次数。 栈:限定仅在表尾进行插入或删除操作线性表。入栈:插入元素的操作;出栈:删除栈顶元素的操作。 队列:只能在队首进行删除、队尾进行插入的线性表。允许插入的一端叫队尾,删除的一端叫队头。串:由零个或多个字符组成的有限序列;空串:零个字符的串;长度:串中字符的数目; 空串:零个字符的串;子串:;串中任意个连续的字符组成的子序列;位置:字符在序列中的序号; 相等:串的值相等;空格串:由一个或多个空格组成的串,

数据结构基础知识大全

/** *名词解释1、数据:是信息的载体,能够被计算机识别、存储和加工处理。 *2、数据元素:是数据的基本单位,也称为元素、结点、顶点、记录。一个数据元素可以由若干个数据项组成,数据项是具有独立含义的最小标识单位。 *3、数据结构:指的是数据及数据之间的相互关系,即数据的组织形式,它包括数据的逻辑结构、数据的存储结构和数据的运算三个方面的内容。 *4、数据的逻辑结构:指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 *5、数据的存储结构:指数据元素及其关系在计算机存储器内的表示。是数据的逻辑结构用计算机语言的实现,是依赖于计算机语言的。 *6、线性结构:其逻辑特征为,若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且其余每个结点只有一个直接前趋和一个直接后继。 *7、非线性结构:其逻辑特征为一个结点可能有多个直接前趋和直接后继。 *8、算法:是任意一个良定义的计算过程,它以一个或多个值作为输入,并产生一个或多个值作为输出;即一个算法是一系列将输入转换为输出的计算步骤。 *9、算法的时间复杂度T(n):是该算法的时间耗费,它是该算法所求解问题规模n趋向无穷大时,我们把时间复杂度T(n)的数量级(阶)称为算法的渐近时间复杂度。 *10、最坏和平均时间复杂度:由于算法中语句的频度不仅与问题规模n有关,还与输入实例等因素有关;这时可用最坏情况下时间复杂度作为算法的时间复杂度。而平均时间复杂度是指所有的输入实例均以等概率出现的情况下,算法的期望运行时间。 *11、数据的运算:指对数据施加的操作。数据的运算是定义在数据的逻辑结构上的,而实现是要在存储结构上进行。 *12、线性表:由n(n≥0)个结点组成的有限序列。其逻辑特征反映了结点间一对一的关系(一个结点对应一个直接后继,除终端结点外;或一个结点对应一个直接前趋,除开始结点外),这是一种线性结构。 *13、顺序表:顺序存储的线性表,它是一种随机存取结构。通过将相邻结点存放在相邻物理位置上来反映结点间逻辑关系。 *14、单链表:每个结点有两个域:一个值域data;另一个指针域next,用来指向该结点的直接后继结点。头指针是它的充分必要的信息。单链表是一种单向的结构。 *15、双链表:每个结点中增加了一个prior,用来指向该点的直接前趋结点。它是一种双向、对称的结构。 *16、循环链表:是一种首尾相接的链表。单循环链表形成一个next链环,而双循环链表形成next链环和prior链环。 *17、存储密度:是指结点数据本身所占的存储量和整个结点结构所占的存储量之比。顺序表的存储密度为1,而链表的存储密度小于1。 *18、栈:只允许在一端进行插入、删除运算的线性表,称为“栈”(stack)。 *19、LIFO表:即后进先出表,修改操作按后进先出的原则进行。譬如栈就是一种LIFO 表。 *20、顺序栈:采用顺序存储结构的栈,称为顺序栈。 *21、链栈:采用链式存储结构的栈,称为链栈。 *22、队列:只允许在一端进行插入、另一端进行删除运算的线性表,称为“队列”(queue)。*23、FIFO表:即先进先出表。譬如队列就是一种FIFO表。 *24、顺序队列:采用顺序存储结构的队列,称为顺序队列。 *25、循环队列:为克服顺序队列中假上溢现象,将向量空间想象为一个首尾相接的圆环,

数据模型所描述的内容包括三个部分

数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。 1)数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。 2)数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。 3)数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。 数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。 1、概念数据模型(Conceptual Data Model):简称概念模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(Database Management System,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。 概念数据模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,它以数据类的方式描述企业级的数据需求,数据类代表了在业务环境中自然聚集成的几个主要类别数据。 概念数据模型的内容包括重要的实体及实体之间的关系。在概念数据模型中不包括实体的属性,也不用定义实体的主键。这是概念数据模型和逻辑数据模型的主要区别。 概念数据模型的目标是统一业务概念,作为业务人员和技术人员之间沟通的桥梁,确定不同实体之间的最高层次的关系。 在有些数据模型的设计过程中,概念数据模型是和逻辑数据模型合在一起进行设计的。 2、逻辑数据模型(Logical Data Model):简称数据模型,这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、层次

专升本《数据结构》_试卷_答案

专升本《数据结构》 一、(共75题,共150分) 1. 数据的基本单位是()。(2分) A.数据元素 B.记录 C.数据对象 D.数据项 .标准答案:A 2. ()是数据的不可分割的最小单位。(2分) A.数据对象 B.数据元素 C.数据类型 D.数据项 .标准答案:D 3. 算法的空间复杂度是对算法()的度量。(2分) A.时间效率 B.空间效率 C.可读性 D.健壮性 .标准答案:B 4. ()是限制了数据元素的内部结构仅为一个字符的线性表。(2分) A.栈 B.队列 C.串 D.数组 .标准答案:B 5. 串的长度是指串中所含()的个数。(2分) A.不同字符 B.不同字母 C.相同字符 D.所有字符 .标准答案:D 6. 采用带头结点双向链表存储的线性表,在删除一个元素时,需要修改指针()次。(2分) A.1 B.2 C.3 D.4 .标准答案:B 7. 线性表的顺序存储结构是一种()的存储结构。(2分) A.顺序存取 B.随机存取 C.索引存取 D.Hash存取 .标准答案:B 8. 数组a[1..m]采用顺序存储,a[1]和a[m]地址分别为1024和1150,每个元素占2字节,则m是()。(2分) A.64 B.32 C.16 D.8 .标准答案:A 9. 深度为h的二叉树,第h层最多有()个结点。(2分) A.h B.2h-1 C.2h-1 D.2h .标准答案:C 10. m个结点的二叉树,其对应的二叉链表共有()个非空链域。(2分) A.m B.m+1 C.2m D.m-1 .标准答案:B 11. 下面叙述错误的是()。(2分) A.顺序表是借助物理单元相邻表示数据元素之间的逻辑关系 B.对于空队列进行出队操作过程中发生下溢现象 C.有向图的邻接矩阵一定是对称的 D.具有相同的叶子个数和具有相同的叶子权值的赫夫曼树不是唯一的 .标准答案:C 12. 以下与数据的存储结构无关的术语是()。(2分) A.循环队列 B.双向链表 C.哈希表 D.数组 .标准答案:D 13. 在一个长度为n的链式栈中出栈实现算法的时间复杂度为()。(2分) A.O(1) B.O(log n) C.O(n) D.O(n2) .标准答案:A 14. 在具有k个度数为2的二叉树中,必有()个叶子结点。(2分) A.k B.k-1 C.2k D.k+1 .标准答案:D 15. 在关键字序列(10,20,30,40,50)中,采用折半法查找20,关键字之间比较需要()次。(2分) A.1 B.2 C.3 D.4 .标准答案:C 16. 16某二叉树的后序遍历序列和和中序遍历序列均为abcd,该二叉树的前序遍历序列是()。(2分) A.abcd B.dcba C.acbd D.dbca .标准答案:B 17. n个顶点的无向连通图的生成树,至少有()个边。(2分) A.n(n-1) B.n(n-1)/2 C.2n D.n-1 .标准答案:D 18. 可以采用()这种数据结构,实现二叉树的层次遍历运算。(2分) A.队列 B.树 C.栈 D.集合 .标准答案:A

《数据结构》基本概念

基本概念 数据 数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号 集合。 数据元素数据元素也称为结点,是表示数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据项 数据项是构成数据元素的不可分割的最小单位。 数据对象数据对象是具有相同性质的数据元素的集合,是数据的子集。注意:在不产生混淆的情况下,将数据对象简称为数据。 数据结构数据结构是指相互之间存在一定关系的数据元素的集合,即数据结构是一个二元组DataStructure = (D, R),其中D是数据元素的集合,R是D上关系的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。 数据的逻辑结构数据的逻辑结构是指数据元素之间逻辑关系的整体。根据数据元素之间逻辑关系的不同,数据结构分为四类: ⑴ 集合:数据元素之间就是“属于同一个集合”,除此之外,没有任何关系; ⑵ 线性结构:数据元素之间存在着一对一的线性关系; ⑶ 树结构:数据元素之间存在着一对多的层次关系; ⑷ 图结构:数据元素之间存在着多对多的任意关系。 注意:数据结构分为两类:线性结构和非线性结构。 数据的存储结构数据的存储结构又称为物理结构,是数据及其逻辑结构在计算机中的表示。通常有两种存储结构:顺序存储结构和链接存储结构。 顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系是由元素的存储位置来表示的。 链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系是用指针来表示的。 注意:存储结构除了存储数据元素之外,必须存储数据元素之间的逻辑关系。 抽象数据类型抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。抽象数据类型提供了使用和实现两个不同的视图,实现了封装和信息隐藏。 算法的定义通俗地讲,算法是解决问题的方法,严格地说,算法是对特定问题求解步骤的一种描述,是指令的有限序列。 算法的特性 ⑴ 输入:一个算法有零个或多个输入(即算法可以没有输入),这些输入通常取自于某个特定的对象集合。 ⑵ 输出:一个算法有一个或多个输出(即算法必须要有输出),通常输出与输入之间有着某种特定的关系。 ⑶ 有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成。 ⑷ 确定性:算法中的每一条指令必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出。 ⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。 线性表的定义 线性表简称表,是零个或多个具有相同类型的数据元素的有限序列。数据元素的个数称为线性表的长度,长度等于零时称为空表。 线性表的逻辑关系 在一个非空表L= (a i, a2, , a n)中,任意一对相邻的数据元素和a i之间(1< i < n)存在序偶 关系(a i-i,a i),且a i-i称为a i的前驱,a i称为的后继。在这个序列中,a i无前驱,a n无后继,其它每个元素有且仅有一个前驱和一个后继。 顺序表的存储结构定义 用MaxSize 表示数组的长度,顺序表的存储结构定义如下: #define MaxSize i00 typedef struct { ElemType data[MaxSize]; // ElemType 表示不确定的数据类型 int length; //length 表示线性表的长度

空间数据结构

空间数据结构 摘要:空间数据模型和空间数据结构是地理信息系统(GIS)课题的中心内容。本文对空间数据结构的定义、分类进行了一定的研究性的归纳与总结。 关键词:空间数据结构,矢量数据,栅格数据 引言 GIS中空间数据结构和空间数据模型是紧密相关的。数据模型的建立必须通过一定的数据结构,但两者之间也有非常大的区别。数据模型是一个总得概念,是人为概念化的真实,是对现实世界的提取,对现实世界的认识和选择。而数据结构指数据元素之间的相互关系,它是软件常规内涵,根据空间数据结构和数据模型的特点及其关系,可以建立空间数据库系统。 空间数据结构定义 空间数据结构是带有空间数据单元的集合。这些数据单元是数据的基本单 位,一个数据单元可以有几个数据项组成,数据单元之间存在某种联系叫做结构。 所以,研究空间数据结构,是指空间目标间的相互关系,包括几何和非几何的关 系,数据结构是数据模型的表述,数据结构往往通过一系列的图表和矩阵,以及 计算机码的数据记录来说明。 空间数据结构的分类 矢量数据结构 定义 矢量数据结构是基于矢量模型,利用欧几里得(EUCLID)几何学中的点、线、 面及其组合体来表示地理实体的空间分布,是通过记录坐标的方式,尽可能精确 地表示点线多边形等地理实体,自然地理实体的位置是用其在坐标参考系中的空 间位置来定义的,坐标空间设为连续,允许任意位置长度和面积的精确定义,其 特点是定位明显,属性隐含。 GIS采用的矢量数据结构模型,是将空间地质实体抽象成点、线、面三种几 何要素,矢量数据结构通过优化拓扑结构表达空间实体的相关关系,为空间数据 库建立基本框架。 矢量数据结构的特点 优点:数据按照点、线或多边形为单元进行组织,结构简单、直观、易实现 以实体为单位的运算和显示。 缺点:

2017年中山大学南方学院专插本《数据结构与算法》考试大纲

本科插班生考试大纲《数据结构与算法》 《数据结构与算法》专业课程考试大纲 考试科目名称:数据结构与算法 一、考试性质 普通高等学校本科插班生招生考试是由专科毕业生参加的选拔性考试。高等学校根据考生的成绩,按已确定的招生计划,德、智、体全面衡量,择优录取。该考生所包含的内容将大致稳定,试题形式多种,具有对学生把握本课程程度的较强识别、区分能力。 二.考试内容及要求 一、考试基本要求 通过数据结构与算法理论的学习,使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术;配合算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力,对理论和实践的操作使学生得到全面的领会和深刻的认识。 二、考核知识点及考核要求 本大纲的考核中,按照“识记”、“领会”、“简单应用”和“综合应用”等四个层次规定应达到的能力层次要求。各能力层次为递进等级关系,后者必须建立在前者的基础上,其含义是: 识记:要求考生知道有关的名词、概念、原理、知识的含义,并能正确认识或识别。 领会:要求在识记的基础上,能把握相关的基本概念、基本原理和基本方法,掌握有关概念、原理、方法的区别与联系。 简单应用:要求在领会的基础上,运用所掌握的基本概念、基本原理和基本方法中的少量知识点,分析和解决一般的理论问题或实际问题。 综合应用:要求在简单应用的基础上,运用学过的多个知识点,综合分析和解决比较复杂的实际问题。

第1章绪论 一、考核知识点 1、数据结构的基本概念 2、抽象数据类型的表示和实现 3、算法的概念和特性 4、算法时间复杂度和空间复杂度分析 二、考核要求 1、识记 (1)数据结构的研究内容 2、领会 (1)抽象数据类型的表示和实现 (2)算法的定义和特性 (3)评价算法优劣的基本标准 3、简单应用 (1)简单数据结构的程序设计 (2)简单数据结构程序的时间复杂度和空间复杂度分析 4、综合应用 (1)数据结构的一些基本概念 (2)算法的时间复杂度分析 第2章线性表 一、考核知识点 1、线性表的类型定义 2、线性表的顺序表示和实现 3、线性表的链式表示和实现 4、线性表的应用

广东技术师范学院2018年专插本《计算机科学技术导论》考试大纲

广东技术师范学院 《计算机科学技术导论》(本科插班生入学考试)考试大纲 (计算机科学学院制定) 一、考试性质与试题命题的原则 《计算机科学技术导论》是广东技术师范学院为计算机科学与技术等专业的本科 插班生入学考试所设置的一个专业课考试科目。它的评价标准是高等学校计算机类专 业高职高专毕业生或相近专业毕业生能达到的及格或及格以上水平,以保证录取的本 科插班生具有一定的计算机科学基础理论及必要的专业技能能力,以利于择优选拔。 考试对象为参加教育部面向全面招生的本科插班生入学考试的高职高专毕业生以及 具有同等学历的报考人员。 《计算机科学技术导论》课程考试的目的和要求是:准确、简明地考核考生对计算机科学体系框架、计算机科学基本知识以及现代计算机发展方向、主要理论和科学方法的掌握和理解水平,衡量他们在理解、掌握和运用这些基本专业理论和知识的基础上,观察、分析和解决技术问题的能力。 二、考试形式及试卷结构 1.考试形式为闭卷、笔试;考试时间为120分钟,试卷满分为100分。 2、试题命制的原则:作为一项选拔性考试,《计算机科学技术导论》考试试题在设计上应具有较高的信度和效度、必要的区分度和合理的难度。命题根据本大纲规定的考试目标和考核内容,考试命题应具有一定的覆盖面且重点突出,侧重考核考生对本学科的基本理论、基本知识和基本技能的掌握程度,以及运用所学的知识解决实际问题的能力。 3.试题对不同能力层次要求的分数比例:识记25%、理解55%,综合应用15%,其他5%。 4.合理安排试题的难度结构。试题难易度分为易、较易、较难、难四个等级。试卷中难易度试题的分布比例,易约占25%,较易约占35%,较难约占20%,难约占10%。 5.试卷的题型有:单项选择题、多项选择题、简答题、改错题、计算题、填空题、综合题等。可根据考核要求,适当安排各种题型数量的比例,达到考核对知识点的识记、理解以及运用水平和能力。

数据结构

(1) The Linked List is designed for conveniently b data item. a. getting b. inserting c. finding d.locating (2) Assume a sequence list as 1,2,3,4,5,6 passes a stack, an impossible output sequence list Is c . a. 2,4,3,5,1,6 b.3,2,5,6,4,1 c.1,5,4,6,2,3 d.4,5,3,6,2,1 (3) A queue is a structure not implementing b . a. first-in/first-out b. first-in/last-out c. last-in/last-out d. first-come/first-serve (4) Removing the data item at index i from a sequential list with n items, d items need to be shifted left one position. a. n-i b. n-i+1 c. i d. n-i-1 (5) There is an algorithm with inserting an item to a ordered SeqList and still keeping the SeqList ordered. The computational efficiency of this inserting algorithm is c . a. O(log2n) b. O(1) c. O(n) d.(n2) (6) The addresses which store Linked List d . a. must be sequential b. must be partly sequential c. must be no sequential d. can be sequential or discontiguous (7) According the definition of Binary Tree, there will be b different Binary Trees with 5 nodes. a. 6 b. 5 c. 4 d. 3 (8) In the following 4 Binary Trees, c is not the complete Binary Tree. a b c d (9) A Binary Tree will have a nodes on its level i at most. a.2i b. 2i c.2i+1 d.2i-1 (10) If the Binary Tree T2 is transformed from the Tree T1, then the postorder of T1 is the b of T2. a. preorder b. inorder c. postorder d. level order (11) In the following sorting algorithm, c is an unstable algorithm. a. the insertion sort b. the bubble sort c. quicksort d. mergesort (12) Assume there is a ordered list consisting of 100 data items, using binary search to find a special item, the maximum comparisons is d . a. 25 b.1 c. 10 d.7 (13) The result from scanning a Binary Search Tree in inorder traversal is in c order. a. descending or ascending b. descending c. ascending d. out of order (14) The d case is worst for quicksort. a. the data which will be sorted is too larger. b. there are many same item in the data which will be sorted . c. the data will be sorted is out of order d. the data will be sorted is already in a sequential order. (15) In a Binary Tree with n nodes, there is a non-empty pointers. a. n-1 b. n+1 c. 2n-1 d.2n+1 (16) In a undirected graph with n vertexs, the maximum edges is b . a. n(n+1)/2 b. n(n-1)/2 c. n(n-1) d.n2 (17) The priority queue is a structure implementing c . a. inserting item only at the rear of the priority queue.

2019年本科插班生考试试题《数据结构》A试卷

韩山师范学院2019年本科插班生招生考试 计算机科学与技术 专业 数据结构 试卷(A 卷) 一、单项选择题(每题2分,共30分) 1. 由3个结点可以构造出多少种不同的二叉树?( ) A .2 B .3 C .4 D .5 2. 一个栈的输入序列为A B C ,则下列序列中不可能是栈的输出序列的是( )。 A. B C A B.C B A C. C A B D. A B C 3. 算法的时间复杂度取决于( ) 。 A .问题的规模 B .待处理数据的初态 C .计算机的配置 D .A 和B 4. 数组的逻辑结构不同于下列( )的逻辑结构。 A. 树 B. 栈 C. 队列 D. 线性表 5. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为( )。 A .8 B .63.5 C .63 D .7 6. 用邻接表表示图进行深度优先遍历时,通常借助( )来实现算法。 A .队列 B. 栈 C. 树 D .图 7. 数据的最小单位是( )。 A.数据元素 B.数据项 C.数据类型 D. 数据变量

8. 设无向图G中有n个顶点,则该无向图的最小生成树上有() 条边。 A. 2n B. 2n-1 C. n-1 D. n 9. 为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是()。 A.栈 B.队列 C.线性表 D.有序表 10. 程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂 度为()。 n) C.O(n2) D.O(n3/2) A. O(n) B. O(nlog 2 11.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。 A. q=p->next;p->next=q->next;free(q); B. q=p->next;p->data=q->data;free(q); C. q=p->next;p->data=q->data;p->next=q->next;free(q); D. q=p->next;q->data=p->data;p->next=q->next;free(q); 12. 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则 第15个元素的地址是()。 A.110 B.108 C.100 D.128 13. 一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。 A.所有的结点均无左孩子 B.所有的结点均无右孩子 C.只有一个叶子结点 D.是任意一棵二叉树 14. 具有n个顶点的有向图最多有()条边。 A.n B.n2 C.n(n+1) D.n(n-1) 15. 设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i 的入度为()。 A.第i行非0元素的个数之和 B. 第i列非0元素的个数之和 C.第i行0元素的个数之和 D. 第i列0元素的个数之和

数据结构

1、单选题(共 20 道试题,共 100 分。)得分:100 1. 把一棵树转换为二叉树后,这棵二叉树的形态是()。 A. 唯一的 2. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行 比较,将其放入已排序序列的正确位置上的方法,称为()。 A. 希尔排序 C. 插入排序 3. 对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是()。 D. n的平方 4. 设哈希表长m=14,哈希函数H(key)=key%11。表中已有4个结点:addr (15)=4;addr (38)=5;addr (61)=6;addr (84)=7,如用二次探测再散列处理冲突,关键字为49的结点的地址 是()。 D. 9 5. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论()是正确的。 A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同 6. 排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的 一端的方法,称为()。 A. 希尔排序 7. 用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下:⑴25,84,21,47,15,27,68,35,20;⑵20,15,21,25,47,27,68,35,84;⑶15,20,21,25,35,27,47,68,84;⑷15,20,21,25,27,35, 47,68,84。则所采用的排序方法是()。 D. 快速排序 8. 对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应逆邻接表中该顶点单链表中的结点数为()。 A. k1 9. 用DFS遍历一个无环有向图,并在DFS算法退栈返回时打印出相应的顶点,则输 出的顶点序列是()。 A. 逆拓朴有序的

相关主题
文本预览
相关文档 最新文档