数据结构第1次作业答案
数据结构第一次作业答案.
假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。
请编写算法将这两个单链表归并为一个按元素值递增次序排列的单链表。
【解答】算法的基本设计思想:因为两链表已按元素值递增次序排列,将其合并是,均从第一个结点起进行比较,将小的结点链入链表中,同时后移链表工作指针。
该问题要求结果链表按元素值递减次序排列,故新链表的建立,应该采用头插法(也就是书本上讲的那种从链表中插入元素值的方法。
比较结束后,可能会有一个链非空,此时用头插法将剩下的结点依次插入新链表中即可。
算法实现如下: void MergeList(ListList &La,LinkList &Lb {LinkList r,pa=La->next,pb=Lb->next; //pa和pb分别是链表La 和//Lb的工作指针La->next=NULL;while(pa&&pb //当两链表均不为空时if(pa->data<=pb->data {r=pa->next; //将pa的后继结点暂存于rpa->next=La->next;La->next=pa; //将pa结点链于结果表中,同时逆//置(头插法pa=r; //恢复pa为当前待比较结点}else {r=pb->next; //将pb的后继结点暂存于rpb->next=La->next;La->next=pb; //将pb结点链于结果表中,同时逆置pb=r;}If(pa pb=pa; //通常情况下会剩下一个链表非空,处理剩//下的部分while(pb{r=pb->next;pb->next=La->next;La->next=pb;pb=r;}free(Lb;}选择题:1、D 2、B1、栈的特点是先进后出,由于进栈和出栈操作是可以穿插着进行的。
当第i个元素第一个出栈时,则i之前的元素可以依次排在i之后出栈,但剩余的元素可以在此时进栈并且也会排在i之前的元素出栈,所以第就j个出栈的元素是不确定的。
数据结构(C++)第一次作业参考答案
数据结构第一次作业数据结构第一次作业一.单项选择题(20分)( )1.已知一算术表达式的后缀形式为ABC *+DE-/,则其中缀形式为 _________。
a、(A+B *C)/(D-E)b、A+B*C /D-Ec、(A+B*C)/D-Ed、A+B*C/(D-E)( )2.若某链表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则采用________存储方式最节省运算时间(假设链表仅设有一个first指针)。
a. 单链表b. 带头结点的双循环链表c. 单循环链表d. 双链表( )3.设一个栈的输入序列为A,B,C,D,则所得到的输出序列不可能是_______。
a. A,B,C,Db. D,C,B,Ac. A,C,D,Bd. D,A,B,C( )4.若线性表最常用的操作是存取第i个元素及其直接前驱的值,则采用_____存储方式节省时间。
a.顺序表 b.双链表 c.单循环链表 d.单链表( )5.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为_______。
(1≤i≤n+1)a、O(0)b、O(1)c、O(n)d、O(n2)( )6.若指针L指向一带头结点的循环单链表的头结点,该表为空表的条件是_______为真值;a. !( L -> link );b. L == (L -> link) -> link;c. L -> link;d. L == L -> link;( )7.用数组A[0..N-1]存放一个循环队列,一元素出队时,其队头指针front的修改方法是________:a. front = (front + 1) mod N;b. front = (front - 2)mod N;c. front = front + 1;d. front = front – 2;( )8.若用Head()和Tail()分别表示取广义表的表头和表尾,广义表A=(1,2,(3,4),(5,(6,7))),则Head(Tail(Head(Tail(Tail(A))))) 。
数据结构第一次作业
第一行为第一个链表的各结点值,以空格分隔。
第二行为第二个链表的各结点值,以空格分隔。
【输出形式】
合并好的链表,以非降序排列,值与值之间以空格分隔。
【样例输入】
4 7 10 34
1 4 6 29 34 34 52
【样例输出】
1 4 6 7 10 29 34 52
【评分标准】
要使用链表实现,否则不能得分。
3.设n为大于1的正整数,计算机执行下面的语句时,带#语句的执行次数为n。
i=1;
j=0;
while(i+j<=n){
# if(i>j)
j++;
else
i++;
}
4.在具有n个链结点的链表中查找一个链结点的时间复杂度为O(n)。
5.下面程序段的时间复杂度为O(mn)。
for ( i = 0; i < n; i++ )
D.每个链结点有多少个直接后继结点,它就应该设置多少个指针域
8.将长度为m的线性链表链接在长度为n的线性链表之后的过程的时间复杂度若采用大O形式表示,则应该是B。
A.O(m) B.O(n) C.O(m+n) D.O(m-n)
9.在一个单链表中,若要在p所指向的结点之后插入一个新结点,则需要相继修改__个指针域
int time (int n) {
int count=0, x=2;
while ( x < n/2 ) {
x=2x;
count++;
}
return (count);
}
时间复杂度:O(logn)
count值:logn-2
数据结构(本)形考作业1参考答案
数据结构(本)形考作业指导作业1参考答案一、单项选择题1.C 2.D 3.B 4.C 5.D 6.C 7.B 8.C 9.A 10.B11.C 12.D 13.C 14.A 15.B 16.C 17.C 18.B 19.B 20.D二、填空题1.n-i+1 2.n-i3.集合线性结构树形结构图状结构4.物理结构存储结构5.线性结构非线性结构6.有穷性确定性可形性有零个或多个输入有一个或多个输出7.图状结构8.树形结构9.线性结构10.n-1 O(n) 11.s->next=p->next; 12.head13.q->next=p->next; 14.p->next=head; 15.单链表16.顺序存储链式存储17.存储结构18.两个直接后继直接前驱尾结点头结点19.头结点的指针指向第一个结点的指针20.链式链表三、问答题1.简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现?答:若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。
数据在计算机中的存储表示称为数据的存储结构。
可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。
尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。
采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。
2.解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。
答:顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,,要求内存中存储单元的地址必须是连续的。
优点:一般情况下,存储密度大,存储空间利用率高。
缺点:(1)在做插入和删除操作时,需移动大量元素;(2)由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。
数据结构 第一次作业 测验答案 慕课答案 作业一 UOOC优课 课后练习 深圳大学
数据结构第一次作业一、单选题 (共100.00分)1. 已知栈S为空,数据1、2、3、4依次逐个进入栈S,则栈顶数据为()A. 1B. 2C. 3D. 4正确答案:D2. 栈的最大特点是()A. 先进先出B. 后进先出C. 无限递归D. 有限递归正确答案:B3. 队列的最大特点是()A. 先进先出B. 后进先出C. 无限递归D. 有限递归正确答案:A4. 已知栈包含10元素,其中存放在栈底是第1号元素,则第10号元素可以通过()进行访问A. 栈底B. 栈中C. 栈尾D. 栈顶正确答案:D5. 以下结构中,哪一个是属于物理结构()A. 栈B. 队列C. 链队列D. 线性表正确答案:C6. 使用长度为10的数组实现循环队列,则该队列最多存储数据个数为()A. 1B. 9C. 11.D.5正确答案:B7. 已知顺序表包含1000个数据,现在第88号位置插入新的数据,需要移动的数据个数为()A. 88B. 87C. 912D. 913正确答案:D8. 若线性表最常用的操作是存取第i个元素及其后继的值,则最节省操作时间的存储结构是()A. 单链表B. 双链表C. 单循环链表D. 顺序表正确答案:D9. 以下结构中,哪一个是属于物理结构()A. 线性表B. 栈C. 单链表D. 队列正确答案:C10. 已知顺序表包含100个数据,现在要删除第99号位置的数据,需要移动的数据个数为()A. 99B. 100C. 1D. 2正确答案:C已知指针p指向单链表L的某个结点,判断p指向的结点是尾结点的条件是()A. if (p->next>p)B. if (p->next==NULL)D. if (p->data==0)正确答案:B12. 以下描述哪个是正确的()A. 线性表的数据元素的存储位置一定是连续的B. 顺序表的数据元素的存储位置一定是连续的C. 链表的数据元素的存储位置一定不是连续的D. 线性表的数据元素的存储位置一定不是连续的正确答案:B已知顺序表包含100个数据,先在第15号位置插入1个新数据,接着删除第3号位置的数据,需要移动的数据总个数为()A. 18B. 84C. 184D. 188正确答案:C在数据结构概念中,数据的基本单位是()A. 数据段B. 数据项C. 数据表D. 数据元素D在数据结构概念中,结构是描述()A. 数据项的类型B. 数据元素之间的关系C. 数据成员的先后顺序D. 数据对象的取值范围正确答案:B在算法设计中,要求算法便于理解和修改是属于算法要求的()A. 正确性B. 可读性C. 健壮性D. 效率高正确答案:B以下关于算法的描述,哪个是正确的()A. 算法可以没有输入B. 算法可以包含无限个执行步骤C. 算法可以没有输出D. 算法的每个步骤允许带有歧义的正确答案:抽象数据类型ADT通过三方面描述,包括数据关系、数据操作和()A. 数据对象B. 数据来源C. 数据范围D. 数据判断正确答案:A设n为问题规模,以下程序的时间复杂度为()for (i=1; i<=10000; i++) for (j=1; j<=n; j++) a = a + 1;A. O(1)B. O(n)C. O(10000n)D. O(n2)正确答案:B20.设n为问题规模,以下程序的时间复杂度为() for (i=1; i< POW(2, n); i++) //POW(x, y)函数表示x的y次幂a = a+100;A. O(n)B. O(2n)C. O(n!)D. O(2n)正确答案:D。
《数据结构》第1阶段在线作业
一、单项选择题答题要求 :每题只有一个正确的选项。
1(5.0 分)0最大容量为 n 的循环队列,队尾指针是 rear,队头是 front,则队空 的条件是( ) A) (rear+1) % n = front B) rear = front C) rear+1 = front D) (rear-l) % n = front 参考答案: B收起解析 解析:无2(5.0 分)0以下判断不正确的是( ) A) 顺序存储的线性表可随机存取。
B) 同一线性表中的数据元素应具有相同的特性。
C) 顺序存储方式的优点是存储密度大,插入、删除操效率高。
D) 在线性表的链式存储结构中,逻辑上相邻的数据元素在物理位置上不一定相 邻。
参考答案: C收起解析解析:无3(5.0 分)0以下说法错误的是( ) A) 散列法存储的基本思想是由关键码的值决定数据的存储地址。
B) 散列表的结点中只包含数据元素自身的信息,不包含任何指针。
C) 装填因子是散列法的一个重要参数,它反映散列表的装填程度。
D) 散列表的查找效率主要取决于散列表造表时选取的散列函数和处理冲突的 方法。
参考答案: B收起解析解析:无4(5.0 分)0一维数组和线性表的区别为( ) A) 前者长度固定,后者长度可变 B) 两者长度均固定 C) 前者长度可变,后者长度固定 D) 两者长度均可变 参考答案: A收起解析 解析:无5(5.0 分)0在具有 n 个结点的二叉树(二叉链表表示)中,值为空的链域数为 () A) n-1 B) 2n-1 C) n1 D) 2n 1 参考答案: B收起解析 解析:无6(5.0 分)5.0已知广义表 LS=((a,b,c),(d,e,f)),运用 head 和 tail 函数取出 LS 中元素 e 的运算是( ) A) head(tail(LS)) B) tail(head(LS)) C) head(tail(head(tail(LS)))) D) head(tail(tail(head(LS)))) 参考答案: C收起解析解析:无7(5.0 分)5.0以下说法错误的是( ) A) 对循环链表来说,从表中任一结点出发都能通过前后操作而扫描整个循环链 表。
数据结构课后习题答案
大学课程《数据结构》课后习题答案第 1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。
【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
数据结构第一次作业及答案--线性表
第一次作业------------线性表题目1、下列图1单链表执行R->data=P->next->data语句后,P->next->data值为A. 5B. 7C. 2D. 3题目2、在顺序表中,只要知道( ),就可在相同时间内求出任一结点的存储地址。
A. 向量大小B. 基地址和结点大小C. 结点大小D. 基地址题目3、非空的循环单链表head的尾节点(由r所指向)满足( )A. r->next=NULLB. r->next=headC. r=NULLD. r=head题目4、设线性表(a1,a2,a3···an)按顺序存储,且每个元素占有m个存储单元,则元素ai 的地址为A. LOC(a1) + i×m ,其中LOC(a1)表示元素a1的地址B. 元素ai的地址无法计算C. LOC(a1) + (i-1)×m,D. LOC(a1) + (i-2)×m题目5、在()运算中,使用顺序表比链表好。
A. 根据元素值查找B. 插入C. 根据序号查找D. 删除题目6、在一个单链表中,若P所指结点不是最后结点,在P之后插入S所指结点A. P→next=S;S→next=PB. S→next=P→next; P=SC. S→next=P→next;P→next=SD. S→next=P;P→next=S题目7、在双向循环链表的*p结点之后插入*s结点的操作是A. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;B. s->prior=p; s->next=p->next; p->next->prior=s; p->next=s;C. p->next=s; s->prior=p; p->next->prior=s; s->next=p->nextD. p->next=s; p->next->prior=s; s->prior=p; s->next=p->next题目8、单链表表示的整数数列如下图,值P->next->next->data为:A. 47B. 93C. 19D. 64题目9、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( )。
数据结构形成性考核册第1次作业参考答案
《数据结构》形成性考核册第1次作业参考答案第一章绪论一、填空题1、数据操作2、集合结构线性结构树型结构图形结构3、引用类型4、1:1 1:n n:m5、不对6、多个7、O(m*n)8、时间复杂度空间复杂度9、顺序链接索引散列10、O(n2)11、O(n)12、O(n)O(m*n)二、选择题1~8:DBABADDD三、应用题(1)功能:判断n是否是一个素数,若是则返回数值1,否则返回0。
时间复杂度:O(n)。
(2)功能:计算S=1!+2!+…+n!的值。
时间复杂度:O(n)。
(3)功能:计算S=1!+2!+…+n!的值。
时间复杂度:O(n2)。
(4)求出满足不等式1+2+…+i≥n的最小i值。
O(n)。
第二章线性表四、填空题1、A[P-1]2、1083、前驱后继4、最后一个表头5、p->next=q->nextq->next=p6、HL->next=NULLHL->next=HL7、P->next8、Q->next9、P->next s10、从前向后前移n-i11、O(1)O(n)12、(n+1)/213、O(n)O(1)14、A[P].next15、a[j].next=a[i].nexta[i].next=j16、数据值指针五、选择题1~5:BDDBC六、应用题1、(1)、(79,62,34,57,26,48)(2)、(26,34,48,57,62,79)(3)、(48,56,57,62,79,34)(4)、(56,57,79,34)(5)、(26,34,39,48,57,62)2、(1)将类型为List的线性表L中第i个元素移至表尾位置的算法,L中的元素类型为ElemType,假定不需要对i的值进行有效性检查。
void move (List& L, int i){ElemType x=L.list[ i-1];for(int j=i; j<L.size; j++)L.list[ j-1]=L.list[ j ];L.list[L.size-1]=x;}·将线性表L中的第i个元素移入表头的算法与上类似。
数据结构第1章作业参考答案
第一章概述一、单项选择题1.数据结构是(C )。
A. 一种数据类型B. 数据的存储结构C. 相互之间存在一种或多种特定关系的数据元素的集合D. 一组性质相同的数据元素的集合2.数据元素及其关系在计算机存储器内的表示,称为数据的(D )。
A. 线性结构B. 非线性结构C. 逻辑结构D. 存储结构3.在数据结构中,数据的逻辑结构可以分成(C )。
A. 内部结构和外部结构B. 紧凑结构和非紧揍结构C. 线性结构和非线性结构D. 动态结构和静态结构4.计算机算法指的是(C )。
A. 计算方法B. 排序方法C. 解决问题的步骤序列D. 调度方法5.一个算法是(c )。
A. 程序B. 要满足五个基本特性C. 具体问题求解步骤的描述D. A和C6.算法必须具备(B)这3个特性。
A. 可执行性、可移植性、可扩充性B. 可行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性7.下面关于算法的叙述中错误的是(A )。
A. 一个算法应有一个或多个输入B. 算法最终必须由计算机程序实现C. 为解决某问题的算法同为该问题编写的程序含义是相同的D. 算法中的每条指令都必须有明确的含义8.若一个算法的时间复杂度用T(n)表示,其中n的含义是( C )。
A. 循环层数B. 语句条数C. 问题规模D. 函数数量9.下面说法正确的是(A)。
A. 健壮的算法不会因非法的数据输入而出现莫名其妙的状态B. 程序一定是算法C. 算法的时间复杂度只依赖于问题的规模D. 算法的优劣与算法描述语言无关,但与所用计算机有关D. 一组性质相同的数据元素的集合10.算法与程序的主要区别在于算法的( B )A.可行性 B.有穷性 C.确定性 D.有输入输出11.算法分析的两个主要方面是( A )。
A.空间复杂性和时间复杂性 B.正确性和简明性C.可读性和文档性 D.数据复杂性和程度复杂性12.以下数据结构中哪一个是非线性结构?( D )A. 队列B. 栈C. 线性表D. 二叉树13.以下数据结构中哪一个是线性结构?( A )A. 队列B.二叉树C. 图D. 集合二、判断题1.数据的逻辑结构是指数据的各数据项之间的逻辑关系。
清华大学数据结构第一次课后作业
第一次作业(注: 各题的题号为教材课后练习的题号)第一章数据结构概论笔做题1-4 什么是抽象数据类型?试用C++ 的类声明定义“复数”的抽象数据类型。
要求(1) 在复数内部用浮点数定义它的实部和虚部。
(2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。
(3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。
(4) 定义重载的流函数来输出一个复数。
1-9 (1) 在下面所给函数的适当地方插入计算count的语句:void d (ArrayElement x[ ], int n ) {int i = 1;do {x[i] += 2; i += 2;} while (i <= n );; i = 1;while ( i <= (n / 2) ) {x[i] += x[i+1]; i++;}}(2) 将由(1)所得到的程序化简。
使得化简后的程序与化简前的程序具有相同的count 值。
(3) 程序执行结束时的count值是多少?(4) 使用执行次数的方法计算这个程序的程序步数,画出程序步数统计表。
上机题1-8 试编写一个函数计算n!*2n的值,结果存放于数组A[arraySize]的第n个数组元素中,0 ≤ n ≤ arraySize。
若设计算机中允许的整数的最大值为maxInt,则当n > arraySize或者对于某一个k (0 ≤ k ≤ n),使得k!*2k > maxInt时,应按出错处理。
可有如下三种不同的出错处理方式:(1) 用cerr <<及exit (1)语句来终止执行并报告错误;(2) 用返回整数函数值0, 1来实现算法,以区别是正常返回还是错误返回;(3) 在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。
数据结构第六版习题一答案
数据结构第六版习题一答案数据结构第六版习题一答案在学习数据结构的过程中,习题是帮助我们巩固知识、提高理解能力的重要方式之一。
本文将为大家提供数据结构第六版习题一的答案,希望能够帮助大家更好地理解和应用数据结构。
1. 问题描述:给定一个数组arr,长度为n,数组中的元素为整数。
请设计一个算法,找出数组中出现次数超过n/2的元素。
解答:可以使用摩尔投票算法来解决这个问题。
首先选取数组中的第一个元素作为候选元素,然后遍历数组,如果当前元素与候选元素相同,则计数器加1,否则计数器减1。
当计数器减到0时,将当前元素设置为新的候选元素。
遍历完数组后,候选元素即为出现次数超过n/2的元素。
2. 问题描述:给定一个链表,判断链表是否存在环。
解答:可以使用快慢指针的方法来解决这个问题。
定义两个指针,一个快指针每次移动两步,一个慢指针每次移动一步。
如果链表存在环,那么快指针一定会追上慢指针,即它们会在某个节点相遇。
如果链表不存在环,那么快指针会先到达链表的末尾。
所以,我们可以通过判断快指针是否为空来确定链表是否存在环。
3. 问题描述:给定一个二叉树,判断它是否是平衡二叉树。
解答:可以使用递归的方法来解决这个问题。
首先定义一个函数来计算二叉树的高度,然后在判断平衡二叉树时,递归地计算左子树和右子树的高度差。
如果高度差大于1,或者左子树和右子树中存在不平衡的情况,则二叉树不是平衡二叉树。
如果左子树和右子树都是平衡二叉树,并且高度差小于等于1,则二叉树是平衡二叉树。
4. 问题描述:给定一个有序数组arr和一个目标值target,使用二分查找算法在数组中查找目标值的位置。
解答:可以使用二分查找算法来解决这个问题。
首先初始化左指针left为0,右指针right为数组长度减1。
然后进行迭代,直到左指针大于右指针为止。
在每一次迭代中,计算中间位置mid,如果中间元素等于目标值,则返回mid。
如果中间元素大于目标值,则将右指针更新为mid-1。
数据结构第一次作业题及答案.doc
第1次作业一、单项选择题(本大题共60分,共20小题,每小题3分)1.在长度为n的顺序表求最小值的时间复杂度为()。
A.0(1)B.0 (n)C.O (n2)D.O (logn)2.顺序表中数据元索的存取方式是()oA.顺序存取B.链式存取C.随机存取D.散列存取3.对于一个具有n个结点的单链表,,在给定值为x的结点后插入一个新结点的平均时间复杂度为()。
A.0(0)B.0(1)C.O(n)D.0(n2)4.在稀疏矩阵的带行指针向量的链接存储中,每个行单链表中的结点都具有和同的()。
A.行号B.列号C.元素值D.地址5.数组A [0.. 5] [0.. 5]的每个元素占5个字节,将其以列为主序存储在起始地址为1000的内存单元中,则元索A [5] [5]的地址是( )。
A.1175B.1180C.1205D.12106.下而程序段的时间复杂度是()。
i = 0; while (i<=n) i二i * 3;A.0 (3n)B.0(log3n)C.0 (n3)D.0(n2)7.假设顺序表中第一个数据元索的存储地址是1000,每个元索占用4个字节,则第7个元索的存储地址是()。
A.1024C.1004D.10078・设栈S和队列Q的初始状态为空,元素el, e2, e3, e4, e5和e6依次通过栈S, —个元素出栈后即进队列Q,若6个元素出队的序列是e2, e4,e3, e6, e5, el则栈S的容量至少应该是()。
A.B.4C.3D.29.判断带头结点的循环单链表L屮只冇一个结点的条件是()。
A.L二二NULLB.L->next->next==LD.L->next==NULL10.下而关于算法说法错误的是()。
A.算法最终必须rti计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C.算法的可行性是指指令不能有二义性D.以上几个都是错谋的11.用单链表表示的链队列中,队头在链表的()位置。
数据结构第一次作业
1判断题(对)1. 数据的逻辑结构与数据元素本身的内容和形式无关。
(错)2. 线性表的逻辑顺序与物理顺序总是一致的。
(对)3. 若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。
(对)4. 对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。
(对)5. 最优二叉搜索树的任何子树都是最优二叉搜索树。
(对)6. 在二叉搜索树上插入新结点时,不必移动其它结点,仅需改动某个结点的指针,使它由空变为非空即可。
(对)7. 有n(n≥1)个顶点的有向强连通图最少有n条边。
(错)8. 连通分量是无向图中的极小连通子图。
(错)9. 二叉树中任何一个结点的度都是2。
(错)10. 单链表从任何一个结点出发,都能访问到所有结点。
二、单选题1 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( B )个元素。
A.8 B. 63.5 C. 63 D. 72 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[3][3]在( A )位置,(10)表明用10进数表示。
A.692(10) B. 626(10) C. 709(10) D. 724(10)3 N个顶点的连通图至少有( A )条边。
A.N-1 B. N C. N+1 D. 04 下面程序的时间复杂度为( C )。
for(int i=0; i<m;i++)for(int j=0; j<n;j++)a[i][j]=i*j;A.O(m2) B. O(n2) C. O(m*n) D. O(m+n)5 设单链表中结点的结构为(data, link)。
已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作( B )。
2020年中国石油大学北京网络学院 数据结构-第一次在线作业 参考答案
D、以上几个都是错误的
我的答案:D 此题得分:2.5分
6.(2.5分) 下面说法错误的是
A、算法原地工作的含义是指不需要任何额外的辅助空间
B、在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
C、所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
我的答案:A 此题得分:2.5分
23.(2.5分) 完成在双循环链表结点p之后插入s的操作是( )
A、p^.next:=s ; s^.priou:=p; p^.next^.priou:=s ; s^.next:=p^.next;
B、p^.next^.priou:=s; p^.next:=s; s^.priou:=p; s^.next:=p^.next;
A、P^.NEXT:=H
B、P^.NEXT:= H^.NEXT
C、P:=H
D、P:=H^.NEXT
我的答案:A 此题得分:2.5分
22.(2.5分) 在一个以 h 为头的单循环链中,p 指针指向链尾的条件是()
A、p^.next=h
B、p^.next=NIL
C、p^.next.^next=h
D、p^.data=-1
A、单链表
B、双链表
C、单循环链表
D、带头结点的双循环链表
我的答案:D 此题得分:2.5分
18.(2.5分) 链表不具有的特点是( )
A、插入、删除不需要移动元素
B、可随机访问任一元素
C、不必事先估计存储空间
D、所需空间与线性长度成正比
我的答案:B 此题得分:2.5分
19.(2.5分) 线性表( a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为( )
西大2022版[0012]《数据结构》网上作业及课程考试复习资料有答案
西大2022版[0012]《数据结构》网上作业及课程考试复习资料有答案[0012]《数据结构》第一次作业[填空题]1、已知栈的基本操作函数:intInitStack(SqStack某S);//构造空栈intStackEmpty(SqStack某S);//判断栈空intPuh(SqStack某S,ElemTypee);//入栈intPop(SqStack 某S,ElemType某e);//出栈函数converion实现十进制数转换为八进制数,请将函数补充完整。
voidconverion(){InitStack(S);canf(\while(N){(1);N=N/8;}while((2)){Pop(S,&e);printf(\}}//converion2.设循环队列的容量为70,现经过一系列的入队和出队操作后,front为20,rear为11,则队列中元素的个数为3.在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q=p->ne某t;p->ne某t=____;4.一个算法的效率可分为()效率和()效率。
5.数据结构被形式地定义为(D,R),其中D是()的有限集合,R是D上的()有限集合。
6.下面程序段的时间复杂度是()。
for(i=0;i参考答案:1.(1)Puh(S,N%8)2.613.q->ne某t4.时间空间5.数据元素关系6.m某n[单选题]一个具有n个顶点的有向图最多有()条边A:n某(n-1)/2B:n某(n+1)/2C:n某(n-1)D:n2参考答案:B[判断题]折半查找只适用于有序表,包括有序的顺序表和链表参考答案:错误[判断题]用循环单链表表示的链队列中,可以不设队头指针,仅在队尾设置队尾指针。
参考答案:正确[判断题]在单链表中,要访问某个结点,只要知道该结点的地址即可;因此,单链表是一种(2)!StackEmpty(S)随机存取结构。
参考答案:错误[单选题]判断一个循环队列Q(最多n个元素)为满的条件是:A:Q->front==(Q->rear+1)%nB:Q->rear==Q->front+1C:Q->front==(Q->rear-1)%nD:Q->rear==Q->front参考答案:A[单选题]在单链表中,指针p指向元素为某的结点,实现删除某的后继的语句是:A:p=p->ne某tB:p=p->ne某t->ne某tC:p->ne某t=pD:p->ne某t=p->ne某t->ne某t参考答案:D[单选题]在双向循环链表中,在p指针所指的结点后插入一个指针q 所指向的新结点,修改指针的操作是:A:p->ne某t=q;q->prior=p;p->ne某t->prior=q;q->ne某t=q;B:q->prior=p;q->ne某t=p->ne某t;p->ne某t->prior=q;p->ne 某t=q;C:q->ne某t=p->ne某t;q->prior=p;p->ne某t=q;p->ne某t=q;D:p->ne某t=q;p->ne某t->prior=q;q->prior=p;q->ne某t=p->ne 某t;参考答案:B[多选题]抽象数据类型的组成部分分别为:A:数据对象B:存储结构C:数据关系D:基本操作参考答案:ACD[多选题]不具有线性结构的数据结构是:A:图B:栈C:广义表D:树参考答案:ACD[多选题]算法分析的两个主要方面是()A:正确性B:简单性C:空间复杂度D:时间复杂度参考答案:CD第二次作业[单选题]设一棵完全二叉树有300个结点,则共有个叶子结点A:150B:152C:154D:156参考答案:A[单选题]由3个结点所构成的二叉树有种形态.A:2B:3C:4D:5参考答案:D[单选题]设有两个串p和q,求q在p中首次出现的位置的运算称作:A:连接B:模式匹配C:求子串D:求串长参考答案:B[单选题]栈中元素的进出原则是:A:先进先出B:后进先出C:栈空则进D:栈满则出参考答案:B[单选题]链表是一种采用存储结构存储的线性表.A:顺序B:星式C:链式D:网状参考答案:C[单选题]数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:A:存储结构B:顺序存储结构C:逻辑结构D:链式存储参考答案:B[判断题]链表的每个结点中都恰好包含一个指针参考答案:错误[判断题]如果将所有中国人按照生日来排序,则使用哈希排序算法最快参考答案:错误[填空题]1.数据的存储结构可用四种基本的存储方法表示,它们分别是().2.在具有n个元素的循环队列中,队满时具有个元素.3.广义表A=((a),a)的表头是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19
8) void matrimult (int a[M][N], int b[N][L], int c[M][L]) { //M,N和L均为全局整型常量 int i , j , k; for ( i = 0; i < M ; i++) for( j = 0 ; j < L ; j++) c[ i ][ j ] = 0 ;
15
4)
int fun ( int n ) { int i = 1, s = 1 ; while ( s < n ) s += ++i ; return i ; }
求满足不等式1+2+3+...+i >= n的最小i值, 时间复杂 度为O(sqrt (n)) 16
5)
void UseFile (ifstream& inp, int c[10]) {
6. 当需要用一个形参访问对应的实参时,则该形参应说明
为引用. 7. 在函数中对引用形参的修改就是对相应实参的修改,对 值或赋值形参的修改只局限在该函数的内部,不会反映 到对应的实参上. 4
8. 当需要进行标准I/O操作时,则应在程序文件中包含
iostream.h头文件,当需要进行文件I/O操作时,则应在程 序文件中包含fstream.h头文件. 9. 在包含有stdlib.h头文件的程序文件中,使用rand ( )%21 能够产生出0~20之间的一个随机整数. 10. 一个记录r理论上占有的存储空间的大小等于所有域 的长度之和,实际上占有的存储空间的大小即记录长度 为sizeof (r).
11
5) 按照ax**2+bx+c的格式(x2用x**2表示)输出二次多 项式,在输出时要注意去掉系数为0的项,并且当b和c的 值为负时,其前不能出现加号. void Print ( Quadratic q ) { if ( q.a ) cout << q.a <<"x**2" ; if ( q.b ) if ( q.b > 0 ) cout << "+" << q.b <<"x" ; else cout << q.b << "x" ; if ( q.c ) if ( q.c > 0 ) cout << "+" << q.c ; else cout << q.c ; cout << endl ; }
6)
void mtable ( int n) { for ( int i = 1; i<= n; i++) { for ( int j = i ; j <= n; j++ ) cout << i << "*" << j << "=" <<setw ( 2 ) <<i * j <<" "; cout << endl ; } }
一、在下面的每个程序段中,假定线性表La的类型为List, 元素类型ElemType为int,并假定每个程序段是连续执行 的,试写出每个程序段执行后所得到的线性表La. (1) InitList (La);
int a[ ] = { 48, 26, 57, 34, 62 ,79 } ; for ( i = 0 ; i < 6 ; i++ )
InsertFront ( La , a[ i ]) ;
TraverseList ( La ) ; (2) InitList ( La ) ; // (79,62,34,57,26,48)
for ( i = 0; i < 6 ; i++)
Insert ( La , a[ i ] ) ; TraverseList ( La ) ; // (26,34,48,57,62,79) 21
二、填空题
1. 数据的逻辑结构被分为集合结构、线性结构、树型结 构和图形结构四种.
2. 数据的存储结构被分为顺序、链接、索引和散列四种; 3
3. 在线性结构、树形结构和图形结构中,前驱和后继结点
之间分别存在着1:1、1:N和M:N的联系. 4. 一种抽象数据类型包括数据定义和操作两个部分. 5. 当一个形参类型的长度较大时,应最好说明为引用,以节 省参数值的传输时间和存储参数的空间.
12
2. 指出下列各算法的功能并求出其时间复杂度.
1) int Prime ( int n ) {
int i = 1 ;
int x = ( int ) sqrt ( n ) ; while ( ++ i <= x ) if ( n% i == 0) break ; if ( i > x ) return 1 ; else return 0 ; } 判断n是否是一个素数, 若是则返回1, 否则返回0, 时间 复杂度为
一个为用户自定义的类型.
14. 若对象ra和rb中至少有一个是属于用户定义的类型,则 执行ra==rb时,需要调用==重载函数,该函数的第一个参 数应与ra的类型相同,第二个参数应与rb的类型相同. 15. 从一维数组a[n]中顺序查找出一个最大值元素的时间
复杂度为O(n),输出一个二维数组b[m][n]中所有元素值
三、应用题 1. 设计二次多项式ax2+bx+c的一种抽象数据类型,假定起 名为Quadratic,该类型的数据部分为三个系数项a,b和c, 操作部分为: 请写出上面每一个操作的具体实现.
8
1) 初始化数据成员a,b和c(假定用记录类型Quadratic定 义数据成员),每个数据成员的缺省值为0.
Quadratic InitQuadratic(float aa=0, float bb=0, float cc=0); Quadratic InitQuadratic( float aa, float bb, float cc ) { Quadratic q ; q.a = aa ; q.b = bb ; q.c = cc ; return q ; }
//假定inp所对应的文件中; i < 10 ; i++) c[ i ] = 0 ; int x ; while ( inp >>x ) { i = x % 10 ; c[ i ]++ ; }
}
利用数组C中的每个元素对应统计inp所联系的整 数文件中个位数值同为i的整数个数 时间复杂度O(n) 17
打印出一个具有n行的乘法表, 第i行中有n-i+1个乘 法项, 每个乘法项为i*j; 时间复杂度为O(n2) 18
7) void
cmatrix ( int a[M][N], int d)
{
//M和N为全局整型常量
for ( int i = 0; i < M; i++) for ( int j = 0; j < N; j++) a[ i ][ j ] *= d ; }
9
2) 做两个多项式加法,即使对应的系数相加,返回相加结果. Quadratic Add ( Quadratic q1, Quadratic q2 ) { Quadratic q ; q.a = q1.a + q2.a ; q.b = q1.b + q2.b ; q.c = q1.c + q2.c ; return q ; } 3) 根据给定x的值计算多项式的值. float Eval ( Quadratic q , float x ) { return ( q.a * x * x + q.b*x + q.c ) ; }
的时间复杂度为O(m*n).
6
16. 在下面程序段中,s=s+p语句的执行次数为_n_,p*=j语 句的执行次数为n(n+1)/2,该程序段的时间复杂度为 O(n2).
int i = 0, s = 0;
while (++ i <= n) { int p = 1; for ( int j = 1; j <= i; j++) s = s + p; p *= j ;
for ( int i = 1 ; i <= n ; i++ ) for ( int j = 1 ; j<= i ; j++ ) S; A n2 C n(n+1) B n2/2 D n(n+1)/2 2
6. 下面算法的时间复杂度为B O(n). int f ( unsigned int n ) { if ( n==0 || n==1 ) return 1 ; else return n*f ( n - 1 ) ; } A O(1) B O(n) C O(n2) D O(n!)
O( n )
13
2) int sum1 ( int n ) { int p = 1, s = 0 ; for ( int i = 1; i <= n ; i++ ) { p *= i ; s += p ; } return s ; 计算: } 时间复杂度为O(n)
14
3)
int sum2 ( int n ) { int s = 0 ; for ( int i = 1; i <= n ; i++ ) { int p = 1; for ( int j = 1; j <= i ; j++) p *= j ; 计算: s += p ; } return s ;