809和908数据结构
809数据结构和908数据结构与算法,习题集,相关题目
长春理工大学计算机考研
长春理工大学计算机研究生学长,平为大家发一些长理计算机、软件、人工智能 考研以及计算机院相关内容,帮助大家更好的了解长理计算机院考研,更好的了解人工智能学院。
展开
-
长春理工大学计算机考研(专业课809 数据结构和操作系统)
尽管数学不尽人意,但结果还是好的,最终成为长春理工大学计专研0新生 ,专业课多亏了学长学姐的各种帮助,由于我们这届是第一次改考专业课(增添了一门操作系统),所以通过各种途径找学长学姐提出问题,有幸遇见你们[萌萌哒R],最终专业课120+,成功上岸。英语政治也是中规中矩学了大半年,经过了初试,复试,成功成为一名研0新生。现在我也可以为各位学弟学妹解答各种问题,有问题都可以打在评论区,我会一一回复。希望各位学弟学妹也能成功上岸,加油!这一年走了很多步,果然我们走过的每一步都算数。原创 2024-05-01 21:32:21 · 220 阅读 · 3 评论 -
编写冒泡排序的算法
809数据结构和908数据结构与算法_练习 第7章 排序。更多题目解析 点击下方获取哟。原创 2023-06-01 21:17:28 · 221 阅读 · 0 评论 -
请利用两个栈S1和S2来模拟一个队列。已知栈的四个运算定义如下:PUSH(S,x):元素x入S栈;POP(S,x):S栈顶元素出栈,赋给变量x;Sempty(S):判断S栈是否为空;Soverflow
此题看起来复杂,题目也很长,其实就是栈和队列的基本操作组合起来。队列的基本操作 入队、出队、判空,现在需要用两个栈来模拟这三个功能,那么这三个功能一个一个的分开实现,也就没那么复杂了。入队时,先入栈S1(此时为逆序),出队时,先将S1的元素出栈再入栈到S2中(此时为顺序),再出栈。如果S1和S2都为空则队列为空。809数据结构和908数据结构与算法_练习 第3章 栈和队列。原创 2023-06-01 21:11:30 · 186 阅读 · 0 评论 -
编写算法将带头结点的单链表就地逆置。
将头结点摘下 , 然后从第一结点开始 , 依次插入到头结点的后面(头插法建立单链。809数据结构和908数据结构与算法_练习 第4章 树与二叉树。表) , 直到最后一个结点为止 , 这样就实现了链表的逆置。所谓 “ 就地’'是指辅助空间复杂度为 0(1)。更多题目解析 点击下方获取哟。原创 2023-06-01 21:07:46 · 953 阅读 · 0 评论 -
二叉树的存储结构定义如下,设计一个算法计算二叉树中所有叶子结点个数
如果一个结点的左右指针都指向空,说明这个结点是叶子结点。使用递归的方法,遍历整个二叉树,寻找叶子结点,每寻找一个,LeafCount会加一,达到计数的效果。809数据结构和908数据结构与算法_练习 第4章 树与二叉树。更多题目解析 点击下方获取哟。原创 2023-06-01 20:49:19 · 375 阅读 · 0 评论 -
1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在( )种情况。 A.5,4,3,2,1 B.2,1,5,4,3 C.4,3,1,2,5 D.2,3,5,4,1答案:C
解释:栈是后进先出的线性表,不难发现C选项中元素1比元素2先出栈,违背了栈的后进先出原则,所以不可能出现C选项所示的情况。(1)若让元素1,2,3,4,5依次进栈,则出栈次序不可能出现在( )种情况。809数据结构和908数据结构与算法_练习 第3章 栈和队列。原创 2023-05-08 17:24:48 · 1388 阅读 · 0 评论 -
已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。
在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。原创 2023-04-25 10:20:54 · 582 阅读 · 0 评论 -
已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。
知道双向循环链表中的一个结点,与前驱交换涉及到四个结点(p结点,前驱结点,前驱的前驱结点,后继结点)六条链。原创 2023-04-25 10:21:08 · 916 阅读 · 1 评论 -
设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )
分别查找第一个值>mink的结点和第一个值 ≥maxk的结点,再修改指针,删除值大于mink且小于maxk的所有元素。原创 2023-04-24 20:01:11 · 304 阅读 · 0 评论 -
设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间
从首元结点开始,逐个地把链表L的当前结点p插入新的链表头部原创 2023-04-24 20:00:14 · 229 阅读 · 0 评论 -
设计一个算法,通过一趟遍历在单链表中确定值最大的结点
假定第一个结点中数据具有最大值,依次与下一个元素比较,若其小于下一个元素,则设其下一个元素为最大值,反复进行比较,直到遍历完该链表。原创 2023-04-24 19:59:06 · 695 阅读 · 0 评论 -
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
B表的头结点使用原来A表的头结点,为C表新申请一个头结点。从A表的第一个结点开始,依次取其每个结点p,判断结点p的值是否小于0,利用前插法,将小于0的结点插入B表,大于等于0的结点插入C表。原创 2023-04-24 19:58:25 · 203 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
求两个集合A和B的差集是指在A中删除A和B中共有的元素,即删除链表中的相应结点,所以要保存待删除结点的前驱,使用指针pre指向前驱结点。pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,如果La表中的元素小于Lb表中的元素,pre置为La表的工作指针pa删除Lb表中的元素;如果其中一个表中的元素较小时,删除此表中较小的元素,此表的工作指针后移。当链表La和Lb有一个为空时,依次删除另一个非空表中的所有元素。原创 2023-04-24 19:56:24 · 140 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出A与B的交集,并存放于A链表中。
只有同时出现在两集合中的元素才出现在结果表中,合并后的新表使用头指针Lc指向。pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,如果两个表中相等的元素时,摘取La表中的元素,删除Lb表中的元素;如果其中一个表中的元素较小时,删除此表中较小的元素,此表的工作指针后移。当链表La和Lb有一个到达表尾结点,为空时,依次删除另一个非空表中的所有元素。原创 2023-04-24 19:54:53 · 469 阅读 · 0 评论 -
将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中允许有重复的数据。
合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的表头结点之后,如果两个表中的元素相等,只摘取La表中的元素,保留Lb表中的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素依次摘取,链接在Lc表的表头结点之后。原创 2023-04-24 19:53:52 · 547 阅读 · 0 评论 -
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。
合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。 第2章 线性表。原创 2023-04-24 19:52:50 · 420 阅读 · 0 评论 -
在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是( )。** A.p->next=q; q->prior=p; p->next->prior=q; q->next=
线性表。原创 2023-04-24 19:50:34 · 419 阅读 · 0 评论 -
在双向链表存储结构中,删除p所指的结点时须修改指针( )。** A.p->next->prior=p->prior; p->prior->next=p->next; B.p->next=p->
线性表。原创 2023-04-24 19:48:03 · 619 阅读 · 0 评论 -
在单链表中,要将s所指结点插入到p所指结点之后,其语句应为( )。** A.s->next=p+1; p->next=s; B.(*p).next=s; (*s).next=(*p).next
线性表原创 2023-04-22 22:41:42 · 1107 阅读 · 0 评论 -
以下说法错误的是( )。** A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低 B.顺序存储的线性表可以随机存取 C.由于顺序存储要求连续的存储区域
A.求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低。解释:链式存储结构和顺序存储结构各有优缺点,有不同的适用场合。C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活。809数据结构和908数据结构与算法_练习 第2章 线性表。D.线性表的链式存储结构优于顺序存储结构。B.顺序存储的线性表可以随机存取。原创 2023-04-22 22:40:12 · 632 阅读 · 0 评论 -
创建一个包括n个结点的有序单链表的时间复杂度是( )。** A.O(1) B.O(n) C.O(n2) D.O(nlog2n) 答案:C
解释:单链表创建的时间复杂度是O(n),而要建立一个有序的单链表,则每生成一个新结点时需要和已有的结点进行比较,确定合适的插入位置,所以时间复杂度是O(n2)。809数据结构和908数据结构与算法_练习 第2章 线性表。原创 2023-04-22 22:39:10 · 2925 阅读 · 0 评论 -
线性表L=(a1,a2,……an),下列说法正确的是( )。** A.每个元素都有一个直接前驱和一个直接后继 B.线性表中至少有一个元素 C.表中诸元素的排列必须是由小到大或由大到小 D.
D.除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继。809数据结构和908数据结构与算法_练习 第2章 线性表。C.表中诸元素的排列必须是由小到大或由大到小。A.每个元素都有一个直接前驱和一个直接后继。B.线性表中至少有一个元素。原创 2023-04-22 22:38:08 · 431 阅读 · 0 评论 -
在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动( )个元素。** A.n-i B.n-i+1 C.n-i-1 D.I
在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动( )个元素。**A.n-i B.n-i+1 C.n-i-1 D.I原创 2023-04-22 22:35:30 · 1333 阅读 · 0 评论 -
将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( )。 A.n B.2n-1 C.2n D.n-1 答案:A 解释:当第一个有
解释:当第一个有序表中所有的元素都小于(或大于)第二个表中的元素,只需要用第二个表中的第一个元素依次与第一个表的元素比较,总计比较n次。809数据结构和908数据结构与算法_练习 第2章 线性表。原创 2023-04-22 22:33:49 · 382 阅读 · 0 评论 -
(7)单链表的存储密度( )。A.大于1 B.等于1 C.小于1 D.不能确定 答案:C 解释:存储密度是指一个结点数据本身所占的存储空间和整个结点所占的
解释:存储密度是指一个结点数据本身所占的存储空间和整个结点所占的存储空间之比,假设单链表一个结点本身所占的空间为D,指针域所占的空间为N,则存储密度为:D/(D+N),一定小于1。A.大于1 B.等于1 C.小于1 D.不能确定。809数据结构和908数据结构与算法_练习 第2章 线性表。原创 2023-04-22 22:33:12 · 1242 阅读 · 0 评论 -
(6)线性表L在( )情况下适用于使用链式结构实现。A.需经常修改L中的结点值 B.需不断对L进行删除插入 C.L中含有大量的结点 D.L中结点结构复杂 答
解释:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。A.需经常修改L中的结点值 B.需不断对L进行删除插入。C.L中含有大量的结点 D.L中结点结构复杂。809数据结构和908数据结构与算法_练习 第2章 线性表。原创 2023-04-22 22:32:22 · 821 阅读 · 0 评论 -
线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续或不连续都可以 答案:D
A.必须是连续的 B.部分地址必须是连续的。C.一定是不连续的 D.连续或不连续都可以。原创 2023-04-22 22:30:26 · 2668 阅读 · 0 评论 -
链接存储的存储结构所占存储空间( )。A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B.只有一部分,存放结点值 C.只有一部分,存储表示结点间关系的指针 D
A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。809数据结构和908数据结构与算法_练习 第2章 线性表。D.分两部分,一部分存放结点值,另一部分存放结点所占单元数。C.只有一部分,存储表示结点间关系的指针。B.只有一部分,存放结点值。原创 2023-04-22 22:29:08 · 1342 阅读 · 0 评论 -
(3) 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动 的元素个数为( )A.8 B.63.5 C.63 D.7 答案:B
809数据结构和908数据结构与算法_练习 第2章 线性表。解释:平均要移动的元素个数为:n/2。原创 2023-04-21 12:43:40 · 1164 阅读 · 0 评论 -
在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B.在第i个结点后插入一个新结点(1≤i≤n) C.删除
解释:在顺序表中插入一个结点的时间复杂度都是O(n2),排序的时间复杂度为O(n2)或O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)809数据结构和908数据结构与算法_练习 第2章 线性表。B.在第i个结点后插入一个新结点(1≤i≤n)C.删除第i个结点(1≤i≤n)D.将n个结点从小到大排序。原创 2023-04-20 20:03:40 · 2848 阅读 · 0 评论 -
(1)顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。A.110 B.108 C.100 D
解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。809数据结构和908数据结构与算法_练习 第2章 线性表。原创 2023-04-20 20:02:17 · 1689 阅读 · 0 评论 -
试分析下面程序段的时间复杂度。(6) ``` x=n; //n>1 y=0; while(x≥(y+1)* (y+1)) y++; ``` 答案:O(n^1/2)
试分析下面程序段的时间复杂度。(6)答案:O(n1/2)解释:while循环共进行了p次循环,且满足p2=n;所以p=n1/2。原创 2023-04-20 19:55:16 · 493 阅读 · 0 评论 -
试分析下面程序段的时间复杂度。(5) ``` x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++; ``` 答案:O(n^2)
的执行次数为n-1+n-2+……+1= n(n-1)/2。809数据结构和908数据结构与算法_练习 第1章 绪论。试分析下面程序段的时间复杂度。原创 2023-04-20 19:54:01 · 2374 阅读 · 0 评论 -
试分析下面程序段的时间复杂度。i=1; while(i<=n) i=i*3;答案:O(log3n)
809数据结构和908数据结构与算法_练习 第1章 绪论。解释:语句i=i*3;的执行次数为 log3n。试分析下面程序段的时间复杂度。答案:O(log3n)原创 2023-04-20 19:52:04 · 1701 阅读 · 1 评论 -
试分析下面程序段的时间复杂度。3)s=0; for i=0; i<n; i++) for(j=0; j<n; j++) s+=B[i][j]; sum=s;答案:O(n^2
809数据结构和908数据结构与算法_练习 第1章 绪论。解释:语句s+=B[i][j];试分析下面程序段的时间复杂度。原创 2023-04-20 19:49:28 · 1520 阅读 · 0 评论 -
试分析下面程序段的时间复杂度。for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]=0;答案:O(m*n) 解释:语句a[i][j]=0;的执行次数为
809数据结构和908数据结构与算法_练习 第1章 绪论。解释:语句a[i][j]=0;的执行次数为m*n。试分析下面程序段的时间复杂度。原创 2023-04-20 19:47:02 · 4975 阅读 · 0 评论 -
试分析下面程序段的时间复杂度。 (1) ``` x=90; y=100; while(y>0) if(x>100) {x=x-10;y--;} else x++; ```
809数据结构和908数据结构与算法_练习 第1章 绪论。试分析下面程序段的时间复杂度。解释:程序的执行次数为常数阶。原创 2023-04-20 19:45:19 · 1162 阅读 · 0 评论 -
以下数据结构中,( )是非线性数据结构 A.树 B.字符串 C.队列 D.栈
A.树 B.字符串 C.队列 D.栈。809数据结构和908数据结构与算法_练习 第1章 绪论。原创 2023-04-20 19:41:15 · 370 阅读 · 0 评论 -
算法的时间复杂度取决于( )。A.问题的规模B.待处理数据的初态 C.计算机的配置D.A和B
解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。809数据结构和908数据结构与算法_练习 第1章 绪论。A.问题的规模B.待处理数据的初态。C.计算机的配置D.A和B。原创 2023-04-20 19:39:50 · 4556 阅读 · 0 评论 -
以下说法正确的是( )。A.数据元素是数据的最小单位 B.数据项是数据的基本单位 C.数据结构是带有结构的各数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构
解释:数据元素是数据的基本单位,数据项是数据的最小单位,数据结构是带有结构的各数据元素的集合。809数据结构和908数据结构与算法_练习 第1章 绪论。D.一些表面上很不相同的数据可以有相同的逻辑结构。C.数据结构是带有结构的各数据项的集合。A.数据元素是数据的最小单位。B.数据项是数据的基本单位。原创 2023-04-18 21:05:19 · 3157 阅读 · 0 评论