收藏 分享(赏)

数据结构习题 答案 全真模拟题 试题.doc

上传人:精品资料 文档编号:8049531 上传时间:2019-06-06 格式:DOC 页数:150 大小:1.26MB
下载 相关 举报
数据结构习题 答案 全真模拟题 试题.doc_第1页
第1页 / 共150页
数据结构习题 答案 全真模拟题 试题.doc_第2页
第2页 / 共150页
数据结构习题 答案 全真模拟题 试题.doc_第3页
第3页 / 共150页
数据结构习题 答案 全真模拟题 试题.doc_第4页
第4页 / 共150页
数据结构习题 答案 全真模拟题 试题.doc_第5页
第5页 / 共150页
点击查看更多>>
资源描述

1、1第一章概论一、名词解释数据表示 2.数据处理 3.数据 4.数据元素 5.逻辑关系 6.逻辑结构 7.结构8.运算 9.基本运算 10.存储结构 11.顺序存储结构 12.链式存储结构13.索引存储结构 14.散列存储结构 15.算法 16.运行终止的程序可执行部分17.伪语言算法 18.非形式算法 19.时空性能 20.时间复杂性 21.数据结构二、填空题1.计算机专业人员必须完成的两项基本任务是:_和_。2.数据在计算机存储器中的存在形式称为_。3.概括地说,数据结构课程的主要内容包括: 数据的_、定义在_、数据的_的实现。此外,该课程还要考虑各种结构和实现方法的_。4.由一种_结构和一

2、组_构成的整体是实际问题的一种数学模型,这种数学模型的建立、选择和实现是数据结构的核心问题。5.存储结构是逻辑结构的_实现。6.数据表示任务是逐步完成的,即数据表示形式的变化过程是_-_-_。7.数据处理任务也是逐步完成的,即转化过程是_-_-_。8.从数据结构的观点看,通常所说的“数据“应分成三个不同的层次,即_、_和_。9.根据需要,数据元素又被称为_、_、_或_。10.在有些场合下,数据项又称为_或_,它是数据的不可分割的最小标识单位。11.从某种意义上说,数据、数据元素和数据项实际反映了数据组织的三个层次,数据可由若干个_构成,数据元素可由若干个_构成。12.根据数据元素之间关系的不同

3、特性,通常有_、_、_、_四类基本逻辑结构,它们反映了四类基本的数据组织形式。13.根据操作的效果,可将运算分成以下两种基本类型:_型运算,其操作改变了原逻辑结构的“值” ,如结点个数、某些结点的内容等;_型运算,其操作不改变原逻辑结构,只从中提取某些信息作为运算的结果。14.将以某种逻辑结构 S 为操作对象的运算称为“_” ,简称“_” 。15.一般地,可能存在同一逻辑结构 S 上的两个运算 A 和 B,A 的实现需要或可以利用 B,而 B 的实现不需要利用 A。在这种情况下,称 A 可以“_”为 B。16.存储实现的基本目标是建立数据的_。17.一般地,一个存储结构包括_、_、_三个主要部

4、分。18.通常,存储结点之间可以有_、_、_、_四种关联方式,称为四种基本存储方式。19.可用任何一种存储方式所规定的存储结点之间的关联方式来间接表达给定逻辑结构 S 中数据元素之间的逻辑关系。由此得到的存储结构,称为_或_。20.一个运算的实现是指一个完成该运算功能的_。运算实现的核心是处2理步骤的规定,即_。21.任何算法都必须用某种语言加以描述。根据描述算法的语言的不同,可将算法分为:_、_、_三类。22.数据结构课程着重评论算法的_,又称为“_” 。23.通常从_、_、_、_等几方面评价算法的(包括程序)的质量。24.一个算法的时空性能是指该算法的_和_,前者是算法包含的_,后者是算法

5、需要的_。25.通常采用下述办法来估算求解某类问题的各个算法在给定输入下的计算量: 根据该类问题的特点合理地选择一种或几种操作作为“_” ; 确定每个算法在给定输入下共执行了多少次_,并将此次数规定为该算法在给定输入下的_。26.通常,一个算法在不同输入下的计算量是不同的。则可用以下两种方式来确定一个算法的计算量: 以算法在所有输入下的计算量的最大值作为算法的计算量,这种计算量称为算法的_或_。 以算法在所有输入下的计算量的加权平均值作为算法的计算量,这种计算量称为算法的_或_。27.最坏情况时间复杂性和平均时间复杂性统称为_或_。28.在一般情况下,一个算法的时间复杂性是_的函数。29.一个

6、算法的输入规模或问题的规模是指_。30.常见时间复杂性的量级有:常数阶 O(_)、对数阶 O(_)、线性阶O (_)、平方阶 O(_)、和指数阶 O(_)。通常认为,具有指数阶量级的算法是_,而量级低于平方阶的算法是_的。31.数据结构的基本任务是数据结构的_和_。32.数据结构的课程的主要内容可以概括为:_、_、_和_。33._与数据元素本身的内容和形式无关。34.从逻辑关系上讲,数据结构主要分为两大类,它们是_和_。35.程序段“for(i=l;i=0)个结点的线性结构表示成(a 1,a 2,an),其中每个 ai代表一个_。a 1称为_结点,a n称为_结点,i 称为 ai在线性表中的_

7、或_。对任意一对相邻结点 ai、a i1 (1=1)个内存单元,其中,b 是顺序表的第一个存储结点的第一个单元的内存地址,那么,第 i 个结点 ai的存储地址为_。10.以下为顺序表的插入运算,分析算法,请在_处填上正确的语句。Void insert_sqlist(sqlistL,datatypex,inti)/*将 X 插入到顺序表 L 的第 i-1 个位置*/ if( L.last = maxsize) error(“表满”);if(iL.last+1)error(“非法位置”);for(j=L.last;j=i;j-)_;L.datai-1=x;L.last=L.last+1;11.对于

8、顺序表的插入算法 insert_sqlist 来说,若以结点移动为标准操作,则插入算法的最坏时间复杂性为_,量级是_。插入算法的平均时间复杂性为_,平均时间复杂性量级是_。12.以下为顺序表的删除运算,分析算法,请在_处填上正确的语句。void delete_sqlist(sqlist L,int i) /*删除顺序表 L 中的第 i-1 个位置上的结点*/if(iL.last)error(“非法位置”);for(j=i+1;j=L.last;j+)_;L.last=L.last-1;13.对于顺序表的删除算法 delete_sqlist 来说,若以结点移动为标准操作,最坏情况时间复杂性及其量

9、级分别是_和_,其平均时间复杂性及其量级分别为_和_。14.以下为顺序表的定位运算,分析算法,请在_处填上正确的语句。int locate_sqlist(sqlist L,datatype X) 6/*在顺序表 L 中查找第一值等于 X 的结点。若找到回传该结点序号;否则回传 0*/_;while(iL.last)if(_)return(i);else return(0);15.对于顺序表的定位算法,若以取结点值与参数 X 的比较为标准操作,平均时间复杂性量级为_。求表长和读表元算法的时间复杂性为_。16.在顺序表上,求表长运算 LENGTH(L)可通过输出_实现,读表元运算GET(L,i)可

10、通过输出_实现。17.线性表的常见链式存储结构有_、_和_。18.单链表表示法的基本思想是用_表示结点间的逻辑关系。19.所有结点通过指针的链接而组织成_。20.为了便于实现各种运算,通常在单链表的第一个结点之前增设一个类型相同的结点,称为_,其它结点称为_。21.在单链表中,表结点中的第一个和最后一个分别称为_和_。头结点的数据域可以不存储_,也可以存放一个_或_。22.单链表 INITIATE(L)的功能是建立一个空表。空表由一个_和一个_组成。23.INITIATE()的功能是建立一个空表。请在_处填上正确的语句。lklist initiate_lklist() /*建立一个空表*/_;

11、_;return(t);24.以下为求单链表表长的运算,分析算法,请在 _处填上正确的语句。int length_lklist(lklist head) /*求表 head 的长度*/_;j=0;while(p-next!=NULL)_;j+;return(j); /*回传表长*/25.以下为单链表按序号查找的运算,分析算法,请在_处填上正确的语句。pointer find_lklist(lklist head,int i) p=head;j=0;while(_) p=p-next; j+; if(i=j) return(p);else return(NULL);726.以下为单链表的定位运算

12、,分析算法,请在_处填上正确的语句。int locate_lklist(lklist head,datatype x)/*求表 head 中第一个值等于 x 的结点的序号。不存在这种结点时结果为 0*/ p=head;j=0;while(_)p=p-next;j+;if (p-data=x) return(j);else return(0);27.以下为单链表的删除运算,分析算法,请在_处填上正确的语句。void delete_lklist(lklist head,int i) p=find_lklist(head,i-1);if(_) q=_;p-next=p-next;free(q);el

13、se error(“不存在第 i 个结点” )28.以下为单链表的插入运算,分析算法,请在_处填上正确的语句。void insert_lklist(lklist head,datatype x,int i)/*在表 head 的第 i 个位置上插入一个以 x 为值的新结点*/ p=find_lklist(head,i-1);if(p=NULL)error(“不存在第 i 个位置” );else s=_;s-data=x;s-next=_;p-next=s;29.以下为单链表的建表算法,分析算法,请在_处填上正确的语句。lklist create_lklist1()/*通过调用 initiate

14、_lklist 和 insert_lklist 算法实现的建表算法。假定$是结束标志*/ ininiate_lklist(head);i=1;scanf(“%f”,while(x!=$)_;_;scanf(“%f”,return(head);8该建表算法的时间复杂性约等于_,其量级为_。30.以下为单链表的建表算法,分析算法,请在_处填上正确的语句。lklist create_lklist2() /*直接实现的建表算法。*/ head=malloc(size);p=head;scanf(“%f”,while(x!=$) q=malloc(size);q-data=x;p-next=q;_;sc

15、anf(“%f”,_;return(head);此算法的量级为_。31除单链表之外,线性表的链式存储结构还有_和_等。32循环链表与单链表的区别仅仅在于其尾结点的链域值不是_,而是一个指向_的指针。33在单链表中若在每个结点中增加一个指针域,所含指针指向前驱结点,这样构成的链表中有两个方向不同的链,称为_。34C 语言规定,字符串常量按_处理,它的值在程序的执行过程中是不能改变的。而串变量与其他变量不一样,不能由_语句对其赋值。35含零个字符的串称为_串,用_表示。其他串称为_串。任何串中所含_的个数称为该串的长度。36当且仅当两个串的_相等并且各个对应位置上的字符都_时,这两个串相等。一个串

16、中任意个连续字符组成的序列称为该串的_串,该串称为它所有子串的_串。37串的顺序存储有两种方法:一种是每个单元只存一个字符,称为_格式,另一种是每个单元存放多个字符,称为_格式。38通常将链串中每个存储结点所存储的字符个数称为_。当结点大小大于 1 时,链串的最后一个结点的各个数据域不一定总能全被字符占满,此时,应在这些未用的数据域里补上_。三、单向选择题1对于线性表基本运算,以下结果是正确的是 ( )初始化 INITIATE(L),引用型运算,其作用是建立一个空表 L=. 求表长 LENGTH(L),引用型运算,其结果是线性表 L 的长度读表元 GET(L,i), 引用型运算。若 1data

17、 是一个数据元素,p-next 的值是一个指针11.单链表的一个存储结点包含 ( )数据域或指针域指针域或链域指针域和链域数据域和链域1012.对于单链表表示法,以下说法错误的是 ( )数据域用于存储线性表的一个数据元素指针域或链域用于存放一个指向本结点所含数据元素的直接后继所在结点的指针所有数据通过指针的链接而组织成单链表NULL 称为空指针,它不指向任何结点,只起标志作用13.对于单链表表示法,以下说法错误的是 ( )指向链表的第一个结点的指针,称为头指针单链表的每一个结点都被一个指针所指任何结点只能通过指向它的指针才能引用终端结点的指针域就为 NULL尾指针变量具标识单链表的作用,故常用

18、尾指针变量来命名单链表14有时为了叙述方便,可以对一些概念进行简称,以下说法错误的是 ( )将“指针型变量”简称为“指针”将“头指针变量”称为“头指针”将“修改某指针型变量的值”称为“修改某指针”将“p 中指针所指结点”称为“P 值”15设指针 P 指向双链表的某一结点,则双链表结构的对称性可用( )式来刻画 p-prior-next-=p-next-next p-prior-prior-=p-next-prior p-prior-next-=p-next-prior p-next-next=p-prior-prior16.以下说法错误的是 ( ) 对循环链表来说,从表中任一结点出发都能通过前

19、后操作而扫描整个循环链表对单链表来说,只有从头结点开始才能扫描表中全部结点双链表的特点是找结点的前趋和后继都很容易对双链表来说,结点*P 的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。17在循环链表中,将头指针改设为尾指针(rear)后,其头结点和尾结点的存储位置分别是 ( )real 和 rear-next-nextrear-next 和 realrear-next-next 和 rearrear 和 rear-next18.以下说错误的是 ( ) 对于线性表来说,定位运算在顺序表和单链表上的量级均为 O(n)读表元运算在顺序表上只需常数时间 O(1)便可实

20、现,因此顺序表是一种随机存取结构在链表上实现读表元运算的平均时间复杂性为 O(1)链入、摘除操作在链表上的实现可在 O(1)时间内完成链入、摘除操作在顺序表上的实现,平均时间复杂性为 O(n)19在串的基本运算中,属于加工型运算的有 ( )EQAL(S,T) LENGTH(S)11CONCAT(S,T) REPLACE(S,T,R) INDEX(S,T)20. 在串的基本运算中,属于引用型运算的有 ( )ASSIGN(S,T) INSERT(S1,i,S2)DELETE(S,i,j) SUBSTR(S,i,j) REPLACE(S,T,R)21循环链表主要优点是 ( )不再需要头指针了已知某个

21、结点的位置后,能够容易找到它的直接前趋在进行插入、删除运算时,能更好地保证链表不断开从表中任一结点出发都能扫描到整个链表22,每种数据结构都具备三个基本操作:插入、删除和查找,这种说法 ( )正确 错误23以下说法错误的是 ( )数据的物理结构是指数据在计算机内实际的存储形式算法和程序没有区别,所以在数据结构中二者是通用的对链表进行插人和删除操作时,不必移动结点双链表中至多只有一个结点的后继指针为空24以下说法正确的是线性结构的基本特征是:每个结点有且仅有一个直接前趋和一个直接后继线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要低在线性表的顺序存储结构中,插人和删除元

22、素时,移动元素的个数与该元素位置有关顺序存储的线性表的插人和删除操作不需要付出很大的代价,因为平均每次操只有近一半的元素需要移动25以下说法错误的是 ( )求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低顺序存储的线性表可以随机存取由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活线性表的链式存储结构优于顺序存储结构26以下说法错误的是 ( )线性表的元素可以是各种各样的,逻辑上相邻的元素在物理位置上不一定相邻在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上不一定相邻在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻线性表的链

23、式存储结构的特点是用一组任意的存储单元存储线性表的数据元素27以下说法正确的是( )在单链表中,任何两个元素的存储位置之间都有固定的联系,因为可以从头结点进行查找任何一个元素在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构顺序存储结构属于静态结构,链式结构属于动态结构顺序存储方式只能用于存储线性结构1228.以下说法正确的是( )顺序存储方式的优点是存储密度大、且插入、删除运算效率高链表的每个结点中都恰好包含一个指针线性表的顺序存储结构优于链式存储结构顺序存储结构属于静态结构,链式结构属于动态结构29.下面关于线性表的叙述正确的是( )线性表采用顺序存储,

24、必须占用一片连续的存储单元线性表采用顺序存储,便于进行插人和删除操作线性表采用链接存储,不必占用一片连续的存储单元线性表采用链接存储,不便于插人和删除操作30.线性表 L=(a1,a2,.,ai,.,an),下列说法正确的是( )每个元素都有一个直接前驱和直接后继线性表中至少要有一个元素表中诸元素的排列顺序必须是由小到大或由大到小的除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继31.线性表的逻辑顺序与存储顺序总是一致的,这种说法( )正确 不正确32.设 p,q 是指针,若 p=q,则*p=*q ,这种说法( ) 正确 不正确33.线性表若采用链表存储结构时,要求

25、内存中可用存储单元的地址( )必需是联系的 部分地址必须是连续的一定是不连续的 连续不连续都可以34.设 REAR 是指向非空带头结点的循环单链表的尾指针,则删除表首结点的操作可表示为( )p=rear; rear=rear-next;rear=rear-next; free(rear);free(p)rear=rear-next-next; p=rear-next-next;free(rear); rear-next-next=p-next;free(p); 35. 单链表中,增加头结点的目的是为了 ( )使单链表至少有一个结点 标示表结点中首结点的位置方便运算的实现 说明单链表是线性表的链

26、式存储实现36 线性结构中的一个结点代表一个数据元素,通常要求同一线性结构的所有结点所代表的数据元素具有相同的特性,这意味着 每个结点所代表的数据元素都一样。 每个结点所代表的数据元素包含的数据项的个数要相等 不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 结点所代表的数据元素有同一特点37带头结点的单链表 Head 为空的判定条件是Head=Null Head-next=NULL Head-next=Head38.非空的单循环链表 L 的尾结点*P,满足13P-next=NULL P=NULL P-next=L P=L.39.双向链表结点结构如下:LLink data RL

27、ink其中:LLink 是指向前驱结点的指针域:data 是存放数据元素的数据域;Rlink 是指向后继结点的指针域。下面给出的算法段是要把一个新结点*Q 作为非空双向链表中的结点*p 的前驱,插入到此双向链表中。不能正确完成要求的算法段是Q-LLink=P-LLink; P-LLink=Q;Q-Rlink=P; Q-Rlink=P;P-LLink=Q; P-LLink-Rlink=Q;P-LLink-Rlink=Q; Q-LLink=P-LLink;Q-LLink=P-LLink;Q-Rlink=P;P-LLink-Rlink=Q;P-LLink=Q;40.若某线性表中最常用的操作是取第 i

28、 个元素和找第 i 个元素的前趋元素,则采用( )存储方式最节省时间。顺序表 单链表 双链表 单循环链表41串是任意有限个符号构成的集合 符号构成的序列字符构成的集合 字符构成的序列四、简答及应用1 请用类 C 语言描述顺序表,并予以解释说明。2 请用类 C 语言描述单链表的类型定义,并予以解释说明。3 请用类 C 语言描述双链表的类型定义,并予以解释说明。4 请用类 C 语言描述顺序串的类型定义。5 请用类 C 语言描述链串的类型定义。6.叙述以下概念的区别:头指针变量、头指针、头结点、首结点,并说明头指针变量和头结点的作用。7有哪些链表可仅由一个尾指针来惟一确定,即从尾指针出发能访问到链表

29、上任何一个结点。8简述下列每对术语的区别:空串和空格串;串变量和串常量;主串和子串;串变量的名字与串变量的值。9设有 A=”,B=“mule“,C=“old“,D=“my“,试计算下列运算的结果(注:A+B 是CONCAT(A,B)的简写,A=“ “的 “ “含有两个空格)。(a) A+B(b) B+A(c) D+C+B(d) SUBSTR(B,3,2)(e) SUBSTR(C,1,0)(f) LENGTH(A)14(g) LENGTH(D)(h) INDEX(B,D)(i) INDEX(C,“d“)(j) INSERT(D,2,C)(k) INSERT(B,1,A)(l) DELETE(B,

30、2,2)(m) DELETE(B,2,0)10.已知:S=“(xyz)*“,T=“(x+z)*y“。试利用连接、求子串和置换等基本运算,将 S 转换为T。五、算法设计1 设 A=(a 1,a2,a3,an)和 B=(b1,b2, .,bm)是两个线性表(假定所含数据元素均为整数) 。若 n=m 且 ai=bi(i=1, .,n),则称 A=B;若 ai=bi(i=1, .,j)且aj+1B。是编写一个比较 A 和 B 的算法,当AB 是分别输出-1,0 或者 1。2,试编写在无头结点的单链表上实现线性表基本运算 LOCATE(L,X)、INSERT(L,X,i)和DELETE(L,i)的算法,

31、并和在带头结点的单链表上实现相的算法进行比较。3试编写在不带头结点的单链表上实现线性表基本运算 LENGTH(L)的算法。4假设有两个按数据元素值递增有序排列的线性表 A 和 B,均以单链表作存储结构。编写算法将 A 表和 B 表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表 C,并要求利用原表(即 A 表和 B 表的)结点空间存放表 C。5设有线性表 A=(a1,a2, .,am)和 B=(b1,b2, .,bn).试写合并 A、B 为线性表 C 的算法,使得:C=;)a,.nb,a.,1( 当当假设 A、B 均以单链表为存储结构(并且 m、n 显示保存)。要求 C 也以

32、单链表为存储结构并利用单链表 A、B 的结点空间。6,设线性表存放在向量 Aarrsize的前 elenum 分量中,且递增有序。试写一算法,将 X插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂性。7已知单链表 L 中的结点是按值非递减有序排列的,试写一算法将值为 x 的结点插入表 L中,使得 L 仍然有序。8,试分别以顺序表和单链表作存储结构,各写一个实现线性表的就地(即使用尽可能少的附加空间)逆置的算法,在原表的存储空间内将线性表(a 1,a 2, .,an)逆置为(a n, .,a2,a1)。9假设分别以两个元素值递增有序的线性表 A、B 表示两个集合(即同一线性

33、表中的元素各不相同),现要求构成一个新的线性表 C,C 表示集合 A 与 B 的交,且 C 中元素也递增有序。试分别以顺序表和单链表为存储结构,填写实现上述运算的算法。10,已知 A、B 和 C 为三个元素值递增有序的线性表,现要求对表 A 作如下运算: 删去那些既在表 B 中出现又在表 C 中出现的元素。试分别以两种存储结构(一处种顺序结构,一种链式的)编写实现上述运算的算法。11假设在长度大于 1 的循环链表中,既无头结点也无头指针。s 为指向链表中某个结点的指针,试编写算法删除结点*s 的前趋结点。1512已知一单链表中的数据元素含有三个字符(即:字母字符、数字字符和其它字符)。试编写算

34、法,构造三个循环链表,使每个循环链表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间(头结点可另辟空间)。13.(Josephus 环)任给正整数 n、k,按下述方法可得排列 1,2,,n 的一个置换:将数字 1,2, .,n 环形排列(如图算法设计题 13.所示),按顺时针方向从 1 开始 计数;计满 K 时输出该为之上的数字(并从环中删去该数字),然后从下一个数字开始继续计数,直到环中所有数字均被输出为止。例如,n=10,k=3 时,输出的置换是3,6,9,2,7,1,8,5,10,4。试编写一算法,对输人的任意正整数 n、k,输出相应的置换14在双链表上实现线性表的下列基

35、本运算(a)初始化; (b)定位(c)插入(d)删除。15设有一双链表,每个结点中除有 prior、data 和 next 三个域外,还有一个访问频度域freq,在链表被起用之前,其值均初始化为零。每当在双链表上进行一次 LOCATEL,X)运算时,令元素值为 X 的结点中 freq 域的值增 1,并使此链表中结点保持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。试编写实现符合上述要求的 LOCATE 运算的算法。16若 X 和 Y 是用结点大小为 1 单链表表示的串,设计一个算法找出 X 中第一个不在 y 中出现的字符。17在顺序串上实现串的判等运算 EQUAL(S,T)。18

36、在链串上实现判等运算 EQUAL(S,T)。19若 S 和 T 是用结点大小为 1 的单链表存储的两个串(S、T 为头指针) ,设计一个算法将串 S 中首次与串 T 匹配的子串逆值。20用串的其他运算构造串的子串定位运算 index。第三章 栈、队列和数组一、名词解释:1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、队头 6.顺序队 7.循环队 8.队满 9.链队 10.随机存储结构 11.特殊矩阵 12.稀疏矩阵 13.对称方阵 14.上(下)三角矩阵 二、填空题:1. 栈修改的原则是_或称_,因此,栈又称为_线性表。在栈顶进行插入运算,被称为_或_,在栈

37、顶进行删除运算,被称为_或_。2. 栈的基本运算至少应包括_、_、_、_、_五种。3. 对于顺序栈,若栈顶下标值 top=0,此时,如果作退栈运算,则产生“_” 。4. 对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“_” 。165. 一般地,栈和线性表类似有两种实现方法,即_实现和_实现。6. top=0 表示_,此时作退栈运算,则产生“_” ;top=sqstack_maxsize-1 表示_,此时作进栈运算,则产生“_” 。7. 以下运算实现在顺序栈上的初始化,请在_处用适当的句子予以填充。int InitStack(SqStackTp *sq) _;return(1);8

38、. 以下运算实现在顺序栈上的进栈,请在_处用适当的语句予以填充。Int Push(SqStackTp *sq,DataType x) if(sp-top=sqstack_maxsize-1error(“栈满”);return(0);else_:_=x;return(1); 9. 以下运算实现在顺序栈上的退栈,请在_用适当句子予以填充。Int Pop(SqStackTp *sq,DataType *x)if(sp-top=0)error(“下溢” );return(0);else*x=_;_;return(1);10. 以下运算实现在顺序栈上判栈空,请在_处用适当句子予以填充。Int Empty

39、Stack(SqStackTp *sq)if(_) return(1);else return(0);11.以下运算实现在顺序栈上取栈顶元素,请在_处用适当句子予以填充。Int GetTop(SqStackTp *sq,DataType *x)if(_) return(0);else*x=_;return(1);12. 以下运算实现在链栈上的初始化,请在_处用请适当句子予以填充。Void InitStacl(LstackTp *ls) _;13. 以下运算实现在链栈上的进栈,请在处用请适当句子予以填充。Void Push(LStackTp *ls,DataType x) LstackTp *p

40、;p=malloc(sizeof(LstackTp);_;17p-next=ls;_;14以下运算实现在链栈上的退栈,请在_处用请适当句子予以填充。Int Pop(LstackTp *ls,DataType *x)LstackTp *p;if(ls!=NULL) p=ls;*x=_;ls=ls-next;_;return(1);else return(0);15. 以下运算实现在链栈上读栈顶元素,请在_处用请适当句子予以填充。Int Get Top(LstackTp *ls,DataType *x) if(ls!=NULL) _;return(1);else return(0);16.必须注意,递归定义不能是“循环定义” 。为此要求任何递归定义必须同时满足如下条件:被定义项在定义中的应用(即作为定义项的出现)具有_;被定义项在最小“尺度”上的定义不是_的。17队列简称_。在队列中,新插入的结点只能添加到_,被删除的只能是排在_的结点。18队列以线性表为逻辑结构,至少包括_、_、_、_ _、五种基本运算。19顺序队的出、入队操作会产生“_” 。20以下运算实现在循环队上的初始化,请在_处用适当句子予以填充。Void InitCycQueue(CycqueueTp *sq) _;sq-rear=0;21. 以下运算实现在循环队上的入队列,请在_处用请适当句子予以填充。Int

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报