2010贵州省C与数据结构链表考试技巧、答题原则
计算机等级考试中常见的数据结构题解题方法
计算机等级考试中常见的数据结构题解题方法数据结构是计算机科学中十分重要的一门学科,它研究的是数据的组织、存储方式以及数据之间的关系等。
在计算机等级考试中,数据结构题目常常涉及到不同的数据结构的使用和解题方法。
本文将介绍一些常见的数据结构题解题方法,帮助考生更好地应对这类题目。
一、栈(Stack)栈是一种具有“先进后出”特点的数据结构,常用的操作有入栈(push)、出栈(pop)以及获取栈顶元素(top)等。
在计算机等级考试中,栈常常被用于处理括号匹配、表达式求值、深度优先搜索等问题。
下面以括号匹配为例,介绍解题方法。
1. 括号匹配括号匹配是栈的经典应用,题目通常要求判断输入的括号序列是否合法。
解题思路如下:- 创建一个空栈;- 从左到右遍历括号序列;- 如果是左括号,则入栈;- 如果是右括号,且栈为空,则返回不合法;- 如果是右括号,且栈不为空,则出栈;- 最后判断栈是否为空,若为空则表示序列合法,若不为空则表示序列不合法。
二、队列(Queue)队列是一种具有“先进先出”特点的数据结构,常用的操作有入队(enqueue)、出队(dequeue)以及获取队首元素(front)等。
在计算机等级考试中,队列常常用于解决与时间有关的问题,如进程调度、排队等。
下面以进程调度为例,介绍解题方法。
1. 短作业优先调度算法短作业优先调度算法是一种常用的进程调度算法,它根据各个进程的执行时间长度来进行排序,并让执行时间最短的进程先执行。
解题步骤如下:- 将所有进程按照执行时间从小到大进行排序;- 依次执行排序后的进程。
三、链表(Linked List)链表是一种非连续存储结构,每个节点包含数据元素和指向下一个节点的指针。
链表的常用操作有插入、删除、查找等。
在计算机等级考试中,链表常常用于解决节点间关系较为复杂的问题,如查找中间节点、反转链表等。
下面以查找中间节点为例,介绍解题方法。
1. 查找中间节点题目要求查找链表中的中间节点,解题思路如下:- 使用两个指针,一个快指针和一个慢指针;- 快指针每次移动两个节点,慢指针每次移动一个节点;- 当快指针到达链表末尾时,慢指针就指向了中间节点。
数据结构面试题
数据结构面试题在面试中,数据结构是一个常见的测试领域。
面试官通常会通过提问关于数据结构的问题来评估面试者的编程技能和解决问题的能力。
在本文中,我们将讨论一些常见的数据结构面试题,并且给出它们的解答。
一、数组1. 如何找到一个数组中的最大值和最小值?要找到一个数组中的最大值和最小值,可以遍历整个数组,并将当前的最大值和最小值与遍历到的元素进行比较。
如果当前元素大于最大值,则更新最大值;如果当前元素小于最小值,则更新最小值。
最终,最大值和最小值即为所求。
2. 如何判断一个数组中是否存在重复元素?要判断一个数组中是否存在重复元素,可以使用一个哈希表来记录每个元素的出现次数。
遍历数组,对于遍历到的每个元素,如果在哈希表中已经存在,则说明存在重复元素;否则,将该元素插入哈希表中。
最终,如果遍历完整个数组都没有发现重复元素,则可以判断数组中不存在重复元素。
二、链表1. 如何翻转一个单链表?要翻转一个单链表,可以使用三个指针进行操作。
初始时,将当前节点的前一节点设为null,当前节点设为头节点。
在遍历单链表时,将当前节点的下一节点保存起来,然后将当前节点的next指针指向前一节点,再将前一节点设为当前节点,当前节点设为下一节点。
重复上述步骤,直到遍历到最后一个节点。
最后,将最后一个节点的next指针指向前一节点,完成翻转。
2. 如何判断一个单链表是否有环?要判断一个单链表是否有环,可以使用两个指针来遍历链表。
初始时,将两个指针都设为头节点。
然后,其中一个指针每次向后移动两个节点,另一个指针每次向后移动一个节点。
如果存在环,那么两个指针最终将相遇;如果不存在环,那么快指针将会先到达链表的末尾。
三、栈和队列1. 如何用两个栈实现一个队列?要用两个栈实现一个队列,可以使用一个栈作为输入栈,一个栈作为输出栈。
当需要入队时,直接将元素压入输入栈;当需要出队时,如果输出栈不为空,则直接从输出栈弹出元素;如果输出栈为空,则将输入栈的元素依次弹出并压入输出栈,再从输出栈弹出元素。
计算机等级考试中的数据结构与算法知识点解析
计算机等级考试中的数据结构与算法知识点解析数据结构与算法是计算机科学领域的重要基础知识,也是计算机等级考试中的必考内容之一。
掌握数据结构与算法的知识,可以帮助我们更好地设计和实现各类计算机程序。
本文将对计算机等级考试中的数据结构与算法知识点进行解析,帮助读者更好地理解和掌握这些内容。
一、数据结构1. 数组:数组是数据结构中最基础的一种,它可以容纳相同类型的多个元素并按照一定的顺序组织。
在计算机等级考试中,常见的与数组相关的知识点包括数组的定义、初始化、访问和操作等。
2. 链表:链表是另一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的指针。
在计算机等级考试中,常见的与链表相关的知识点包括单链表、双链表、循环链表的定义与操作,以及链表的插入、删除和反转等操作。
3. 栈与队列:栈和队列都是线性数据结构,栈的特点是后进先出(LIFO),而队列的特点是先进先出(FIFO)。
在计算机等级考试中,常见的与栈和队列相关的知识点包括栈和队列的定义、初始化和操作等。
4. 树:树是一种非线性数据结构,它由一组节点和边组成。
在计算机等级考试中,常见的与树相关的知识点包括二叉树、平衡二叉树、搜索树、堆等的定义与操作,以及树的遍历算法等。
5. 图:图是一种复杂的非线性数据结构,它由节点和边组成,可以表示各种实际问题中的关系。
在计算机等级考试中,常见的与图相关的知识点包括图的表示方法、图的遍历算法、最短路径算法等。
二、算法1. 查找算法:查找算法用于在给定数据集中寻找目标元素的过程。
在计算机等级考试中,常见的查找算法包括线性查找、二分查找、哈希查找等。
2. 排序算法:排序算法用于将一组数据按照一定的顺序进行排列的过程。
在计算机等级考试中,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序等。
3. 图算法:图算法用于解决与图相关的各种问题。
在计算机等级考试中,常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最小生成树、最短路径、拓扑排序等。
数据结构上机考试题目及要求
数据结构上机实验考试标准一、评分标准:1.根据考试完成情况,参考平时上机情况评定优、良、中、及格、不及格5个档。
2.成绩分布比例近似为:优15%、良30%、中30%、及格20%、不及格<10%二、评分原则:1.充分参考平时实验完成情况,结合如下原则给出成绩;2.只完成第一题,成绩为良以下成绩(中、及格),若平时上机情况很好,可以考虑良好;3.两道题都完成,成绩为良及以上(优、良),根据完成质量和完成时间给成绩;4.如未完成任何程序,则不及格(根据平时成绩将不及格率控制在10%以下);三、监考要求:1.考试前,要求学生检查电脑是否工作正常,如果不正常及时解决,待所有考生均可正常考试后再发布试题。
2.平时上机完成的程序可以在考试过程直接调用,在考试开始前复制到硬盘当中,考试过程中可以看教材。
3.考试开始后向学生分发考题的电子文档,同时宣读试题,学生可以通过网络或磁盘拷贝试题。
4.考试开始十五分钟之后把网络断开,学生不得再使用任何形式的磁盘。
5.程序检查时,记录其完成时间和完成情况。
除检查执行情况外,还要求学生对代码进行简要讲解,核实其对代码的理解情况和设计思想,两项均合格方视为试题完成。
6.完成考试的学生须关闭电脑立刻离开考场,考试成绩由教务办统一公布,负责教师不在考试现场公布成绩。
数据结构上机实验考试题目(2011年12月23日)题目1.设C={a1,b1,a2,b2,…,a n,b n}为一线性表,采用带头结点的单链表hc(hc为C链表的头指针)存放,设计一个算法,将其拆分为两个线性表(它们都用带头结点的单链表存放),使得:A={a1,a2,…,a n},B={b n,b n-1,…,b1}。
[例] C链表为:C={1,2,3,4,5,6,7,8,9,10}拆分后的A、B链表如下:A={1,3,5,7,9},B={10,8,6,4,2}。
要求:算法的空间复杂度为O(1)。
即利用C链表原来的空间。
链表的刷题套路
链表的刷题套路
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表在计算机科学中被广泛使用,因此掌握链表的相关算法非常重要。
下面是一些常见的链表题目及其解题思路:
1. 单向链表的长度
题目描述:给定一个单向链表,返回链表的长度。
解题思路:遍历链表,使用一个计数器记录链表的长度。
2. 双向链表的中间节点
题目描述:给定一个双向链表的头节点,返回链表的中间节点。
解题思路:可以使用快慢指针的方法。
两个指针同时从头节点开始遍历,一个指针每次前进一步,另一个指针每次前进两步。
当快指针到达链表末尾时,慢指针正好在中间节点。
3. 反转链表
题目描述:给定一个单向链表的头节点,反转链表并返回反转后的链表。
解题思路:可以使用迭代或递归的方法。
迭代方法需要使用三个指针,分别指向当前节点、前一个节点和后一个节点。
递归方法需要先递归到链表的倒数第二个节点,然后改变指针的指向即可。
4. 合并两个有序链表
题目描述:给定两个升序链表,合并它们并返回一个升序链表。
解题思路:可以使用归并排序的思想。
分别遍历两个链表,将较小的节点添加到结果链表中,同时更新指针的指向。
最后返回结果链表的头节点即可。
5. 删除链表中的重复元素
题目描述:给定一个单向链表,删除所有重复的元素,只留下每个元素出现一次的节点。
解题思路:可以使用哈希表或双指针的方法。
哈希表方法需要使用一个哈希表来记录每个元素是否出现过。
双指针方法需要同时遍历链表,当发现有重复元素时删除该元素并更新指针的指向。
链表常见的题型和解题思路
链表常见的题型和解题思路1.链表中环的⼊⼝节点⾸先判断头指针是不是空的然后需要判断这个链表中包不包含环:两个指针,⼀个⼀步⼀个两部,如果相遇,说明存在然后判断环节点的个数:从相遇的位置开始,往前⾛并计数,直到和⾃⼰再次相遇,得到个数然后找出⼊⼝节点:从头开始,俩指针⼀个先⾛n步,另⼀个再⾛,两个相遇的位置就是⼊⼝节点位置2.翻转链表需要判断链表是不是空的或者链表是不是只有⼀个节点,如果是的话,直接就输出原来的链表了;如果不是的话,翻转利⽤循环来做,因为需要将当前节点指向前⼀个节点,所以后⼀个节点需要先保存位置,也就是需要三个指针,⼀个pPre,⼀个pCur,⼀个pNext:先保存后⼀个节点,然后把当前节点指向前⼀个节点,然后把当前节点变成上⼀个节点,下⼀个节点变成当前节点;注意翻转之后头结点是原来的最后⼀个节点。
3.从尾到头打印链表思路(1):可以先翻转链表,再逐个输出思路(2):这种具有“后进先出”特性的,⽤栈⽐较容易,创建⼀个栈存放链表的节点,存放完之后从栈顶依次取出即可4.两个链表的第⼀个公共节点举例⼦:1 2 5 9 6 3 07 8 9 6 3 0⾸先需要知道的是,两个链表从公共节点开始,之后的节点肯定都是⼀模⼀样的;可以先遍历得到两个链表各⾃的长度,然后让长的那个先⾛⽐另⼀个长出的步数,再同时⾛,判断哪⾥相等哪⾥就是第⼀个公共节点了5.链表中倒数第k个节点单向链表肯定是不能从后往前数的,这个跟上⾯有的类似,既然知道是倒数第k个,那就两个指针,让⼀个先⾛k-1步,然后两个同时⾛,判断先⾛的那个到尾结点了,那后⾛的那个就是倒数第k个节点。
6.删除链表中重复的节点例如:1 2 3 3 4 4 5结果是1 2 5⾸先需要判断头指针(第⼀个节点)和第⼆个节点是不是空的,如果是,返回头指针就⾏了;正常情况的时候,因为有可能存在删除第⼀个节点的情况,所以需要先重新创建⼀个头指针ListNode* newHead = new ListNode(-1),然后把这个头指针赋初值指向原本的头指针newHead->next = pHead;然后需要三个指针来解决这个问题,分别是pPre pCur pNext三个,pPre 赋初值newHead,pCur赋初值pHead, 利⽤当前节点的循环来进⾏:得判断当前节点和当前节点的下⼀个节点不为空才进⼊循环来查找和删除,因为⾥头要对节点进⾏删除,所以要先保存下⼀个节点,然后如果当前节点等于下⼀个节点的值,因为还要继续判断下⼀位,来⼀个循环,只要下⼀个节点和当前节点的值相等,就把pNext往后移⼀个,直到找到不相等的就退出这个查找的循环了;然后执⾏删除,也就是把上⼀个节点pPre的下⼀个节点变成pNext,当前操作循环的节点变成pNext,然后再去循环判断;那如果当前节点和下⼀个节点的值不相等呢:指针往后挪,循环再判断,也就是pPre = pCur;pCur = pCur->next。
经典数据结构面试题(含答案)
经典数据结构面试题(含答案)1. 什么是数据结构?数据结构是计算机存储、组织数据的方式,它能够更有效地存储数据,以便于进行数据检索和修改。
2. 什么是线性表?线性表是一种基本的数据结构,由一组数据元素组成,其中每个元素都有一个前驱和一个后继,除了第一个元素没有前驱,一个元素没有后继。
3. 什么是栈?栈是一种后进先出(LIFO)的数据结构,它允许在一端进行插入和删除操作,通常称为栈顶。
4. 什么是队列?队列是一种先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作,通常称为队头和队尾。
5. 什么是链表?链表是一种由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
链表可以分为单向链表、双向链表和循环链表。
6. 什么是树?树是一种非线性数据结构,由节点组成,每个节点有零个或多个子节点。
树可以分为二叉树、平衡树、B树等。
7. 什么是图?图是一种由节点和边组成的数据结构,节点称为顶点,边表示顶点之间的关系。
图可以分为有向图和无向图。
8. 什么是排序算法?排序算法是一种对数据进行排序的方法,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。
9. 什么是哈希表?哈希表是一种基于哈希函数的数据结构,它通过哈希函数将键值映射到表中一个位置来快速检索数据。
10. 什么是动态规划?动态规划是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。
经典数据结构面试题(含答案)11. 什么是二叉搜索树?二叉搜索树是一种特殊的二叉树,其中每个节点的左子树只包含小于该节点的值,右子树只包含大于该节点的值。
12. 什么是平衡二叉树?平衡二叉树是一种自平衡的二叉搜索树,它通过旋转操作来保持树的平衡,使得树的高度保持在对数级别。
13. 什么是B树?B树是一种自平衡的树数据结构,它保持数据的有序性,并允许搜索、顺序访问、插入和删除的操作都在对数时间内完成。
计算机等级考试中数据结构题解题技巧
计算机等级考试中数据结构题解题技巧数据结构是计算机科学中非常重要的一个概念,它涉及到如何组织和存储数据,以及在这些数据上进行各种操作的方法和技巧。
对于计算机等级考试而言,数据结构题目通常会是一种较为常见的题型。
为了帮助大家更好地应对这类题目,本文将介绍一些解题技巧和注意事项。
一、理解题目要求在解答任何题目之前,首先要充分理解题目的要求。
数据结构题目往往会给出一些具体的问题或者操作需求,而我们需要根据这些要求来选择合适的数据结构以及相应的算法。
因此,在开始解题之前,仔细阅读题目,确保对问题和操作要求有一个准确的理解。
二、选择合适的数据结构不同的数据结构适用于不同的场景和需求,因此在解题时要根据题目要求选择合适的数据结构。
常见的数据结构有数组、链表、队列、栈、树、图等,它们各自具有不同的特点和适用范围。
在选择数据结构时,需要考虑到题目的具体情况,比如是否需要频繁插入、删除、查找等操作,以及对数据的有序性要求等。
选择合适的数据结构可以使解题过程更加高效和简洁。
三、掌握基本操作对于每种数据结构,都有其对应的基本操作,比如在数组中插入元素、在链表中删除节点、在树中查找节点等。
掌握这些基本操作非常重要,它们是解决数据结构题目的基础。
在复习和练习过程中,要多加强对这些基本操作的理解和掌握,熟练运用它们可以帮助我们更好地解决各种数据结构题目。
四、熟悉常见算法和实现在解题过程中,经常需要使用一些常见的算法和实现方式,比如深度优先搜索(DFS)、广度优先搜索(BFS)、递归、迭代等。
熟悉这些算法和实现方式可以帮助我们更快地解决问题,提高解题效率。
因此,在复习过程中,要重点关注这些常见算法和实现方式,并进行充分的练习和巩固。
五、注重代码实现的细节在解题时,不仅需要考虑算法和数据结构的选择,还需要注重代码实现的细节。
比如,在使用指针或引用时,要注意指针是否为空,引用是否合法;在对链表进行操作时,需要注意头节点和尾节点的处理;对于递归算法,要注意递归条件和终止条件的设置等。
C++及数据结构笔试面试常见知识点总结
C++及数据结构笔试⾯试常见知识点总结⼀些常考的基础知识点个⼈总结,⼤神勿喷,欢迎指正。
1.⼴义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表。
2.构造函数不能声明为虚函数。
构造函数为什么不能是虚函数?1. 从存储空间⾓度,虚函数对应⼀个指向vtable虚函数表的指针,这⼤家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。
问题出来了,如果构造函数是虚的,就需要通过 vtable来调⽤,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。
2. 从使⽤⾓度,虚函数主要⽤于在信息不全的情况下,能使重载的函数得到对应的调⽤。
构造函数本⾝就是要初始化实例,那使⽤虚函数也没有实际意义呀。
所以构造函数没有必要是虚函数。
虚函数的作⽤在于通过⽗类的指针或者引⽤来调⽤它的时候能够变成调⽤⼦类的那个成员函数。
⽽构造函数是在创建对象时⾃动调⽤的,不可能通过⽗类的指针或者引⽤去调⽤,因此也就规定构造函数不能是虚函数。
3. 构造函数不需要是虚函数,也不允许是虚函数,因为创建⼀个对象时我们总是要明确指定对象的类型,尽管我们可能通过基类的指针或引⽤去访问它但析构却不⼀定,我们往往通过基类的指针来销毁对象。
这时候如果析构函数不是虚函数,就不能正确识别对象类型从⽽不能正确调⽤析构函数。
4. 从实现上看,vbtl在构造函数调⽤后才建⽴,因⽽构造函数不可能成为虚函数从实际含义上看,在调⽤构造函数时还不能确定对象的真实类型(因为⼦类会调⽗类的构造函数);⽽且构造函数的作⽤是提供初始化,在对象⽣命期只执⾏⼀次,不是对象的动态⾏为,也没有必要成为虚函数。
5. 当⼀个构造函数被调⽤时,它做的⾸要的事情之⼀是初始化它的VPTR。
因此,它只能知道它是“当前”类的,⽽完全忽视这个对象后⾯是否还有继承者。
当编译器为这个构造函数产⽣代码时,它是为这个类的构造函数产⽣代码——既不是为基类,也不是为它的派⽣类(因为类不知道谁继承它)。
2010贵州省数据结构基础考试答题技巧
1、下面关于线性表的叙述中,错误的是哪一个?( D )A)线性表采用顺序存储,必须占用一片连续的存储单元。
B)线性表采用链接存储,便于插入和删除操作。
C)线性表采用链接存储,不必占用一片连续的存储单元。
D)线性表采用顺序存储,便于进行插入和删除操作。
2、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以C)部分地址必须是连续 D)必须是不连续的3、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)404、在数据结构中,从逻辑上可以把数据结构分为( C )。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构C)线性结构和非线性结构 D)内部结构和外部结构5、如果结点A有3个兄弟,而且B为A的双亲,则B的度为( B )。
A)3 B)4 C)5 D)16、如果结点A有3个兄弟,而且B为A的双亲,则B的度为( B )。
A)3 B)4 C)5 D)17、设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列是( C )。
A) A, B, C, D, EB) B, C, D, E, AC) E, A, B, C, DD) E, D, C, B, A8、在数据结构中,从逻辑上可以把数据结构分为( C )。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构C)线性结构和非线性结构 D)内部结构和外部结构9、在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为( B )。
A) rear=rear->next; B) front=front->next;C) rear=front->next; D) front=rear->next ;10、线索二叉树中某结点D,没有左孩子的条件是( B )。
计算机二级c语言操作题做题技巧
计算机二级c语言操作题做题技巧一、选择题做题技巧1. 仔细阅读题干,注意题干中的关键词。
2. 理解选项,排除明显错误的选项。
3. 对于不确定的选项,可采用排除法,逐步缩小范围。
4. 利用C语言的基础知识,对选项进行逻辑推理。
二、填空题做题技巧1. 仔细阅读题目要求,明确填空内容。
2. 根据题目所给的代码片段,分析上下文关系。
3. 根据C语言的语法规则,填写合适的语句或表达式。
4. 检查填空后代码的逻辑性和语法正确性。
三、编程题做题技巧1. 理解题目要求,明确编程目的和功能。
2. 仔细分析题目给出的示例输入输出,理解题目的逻辑。
3. 设计算法,将问题分解为小的步骤。
4. 编写代码,注意代码的可读性和逻辑性。
5. 运行测试,检查代码的正确性和完整性。
6. 考虑边界条件和异常情况,确保程序的健壮性。
四、调试题做题技巧1. 阅读题目,了解需要调试的代码段。
2. 运行代码,观察程序的运行结果。
3. 根据题目要求,分析程序中的错误。
4. 利用调试工具,逐步跟踪程序的执行过程。
5. 修改错误,确保程序能够正确运行并满足题目要求。
五、综合应用题做题技巧1. 综合运用选择题、填空题、编程题和调试题的技巧。
2. 分析题目的综合性要求,合理分配解题时间。
3. 注意题目中的细节要求,避免因小失大。
4. 综合运用C语言的知识和技能,解决实际问题。
六、注意事项1. 保持冷静,合理安排考试时间。
2. 仔细审题,避免因粗心大意而失分。
3. 遇到难题不要慌张,先做自己熟悉的题目。
4. 检查答案,确保没有遗漏或错误。
5. 考试结束后,及时复习总结,为下一次考试做好准备。
2010年硕士研究生入学考试“数据结构与C语言程序设计”试题与答案
13.C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是 A.单向值传递 B.地址传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 14.C 语言规定,函数返回值的类型是由 A.return 语句中的表达式的类型所决定 B.调用该函数时的主函数的类型所决定 。
3
C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数的类型所决定 15.下面给出的 4 个定义语句中,与 int *p[5]; 等价的是 。 A.int p[5]; B.int *p; C.int *(p[5]); 16.若有以下定义和语句,则值为 1002 的表达式是 。 struct s{ int age; int num; }; static struct s a[3]={1001,20,1002,19,1003,21},*ptr; ptr=a; A.ptr++->num B.(ptr++)->age C.(*ptr).num D.(*++ptr).age 17.若要通过下面的程序段使得指针变量指向一个存储整型变量的动态存储单元,则程序段中的空 。 白处(横线上方)应该是 int *ptr; ptr= malloc(sizeof(int)); A.int B.int * C.(int *) D.(*int ) 。 18.下面关于宏的叙述中,错误的是 A.宏名无类型,其参数也无类型 B.宏定义不是 C 语句,不必在行的末尾加分号 C.宏替换只是字符替换 D.宏定义命令必须写在文件的开头 。 19.下列关于 C 语言文件操作的叙述中,正确的是 A.对文件的操作必须是先打开文件 B.对文件的操作必须是先关闭文件 C.对文件操作之前必须先测试文件是否已打开,然后再打开文件 D.对文件的操作无顺序要求 20.使用 fopen( )函数以文本方式打开或者建立可读写文件。要求:若指定文件不存在,则建立一 个文件,并使文件指针指向其开头;若指定文件存在,则打开该文件,并将文件指针指向其结尾。下列 。 “文件使用方式”中,正确的是 A.“r+” B.“ a+” C.“ w+” D.“a”
链表常见面试题
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表在面试中经常被问到一些问题,以下是一些常见的问题及其回答:问题1:什么是链表?回答:链表是一种线性数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表的特点是每个节点都有自己的数据,而不需要像数组那样通过索引访问元素。
问题2:链表的优点和缺点是什么?回答:链表的优点包括:* 空间利用率高,因为每个节点都可以存储更多的数据。
* 插入和删除操作的时间复杂度较低,因为只需要修改指针即可。
* 可以实现动态内存分配,可以根据需要动态地添加或删除节点。
然而,链表的缺点包括:* 访问链表中的元素时需要遍历链表,时间复杂度较高。
* 内存管理比较复杂,需要手动管理节点和指针。
问题3:链表的种类有哪些?回答:链表可以按照不同的方式进行分类,例如单向链表、双向链表、循环链表等。
其中单向链表是最常用的类型,因为它简单且易于实现。
双向链表和循环链表也经常被用于需要双向或循环访问的场景。
问题4:如何实现链表?回答:实现链表需要定义一个节点类,该类包含数据和指向下一个节点的指针。
然后可以使用这个节点类来创建链表对象,并使用指针来添加和删除节点。
问题5:如何遍历链表?回答:遍历链表通常使用迭代器或指针来实现。
可以使用指针从头节点开始遍历链表,直到到达尾节点。
也可以使用迭代器来遍历链表中的元素。
问题6:如何反转链表?回答:反转链表可以使用迭代器或递归来实现。
使用迭代器时,可以从头节点开始遍历链表,并在遍历过程中修改指针以反转链表的方向。
使用递归时,可以将头节点移到下一个节点,然后将该节点作为新的头节点重复此过程,直到最后一个节点被反转。
问题7:如何在链表中查找元素?回答:在链表中查找元素通常使用线性搜索或二分搜索。
线性搜索是从头节点开始遍历链表,直到找到要查找的元素或到达尾节点为止。
二分搜索可以在链表的子集中快速查找元素,但需要额外的空间和时间复杂度。
c语言数据结构面试题
c语言数据结构面试题在此篇文章中,我们将讨论一些与C语言数据结构相关的面试题。
这些问题将帮助您更好地了解C语言数据结构的概念和实践,并在面试过程中展示您的知识和技能。
问题一:什么是数据结构?答:数据结构是计算机科学中用来存储和组织数据的方式。
它涉及到数据元素之间的关系,以及对这些关系进行操作和访问的方法。
问题二:请解释以下几种常见的数据结构类型:数组、链表和栈。
答:1. 数组:数组是一种线性数据结构,用于存储固定大小的相同类型元素。
数组的元素可以通过索引进行访问,索引从0开始。
2. 链表:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表的节点可以在运行时动态增加或删除。
3. 栈:栈是一种后进先出(LIFO)的数据结构。
它只允许在栈的一端进行插入和删除操作,这一端被称为栈顶。
问题三:什么是队列?请解释队列的两种常见类型:普通队列和循环队列。
答:队列是另一种常见的数据结构,它按照先进先出(FIFO)的顺序存储元素。
插入操作(入队)发生在队列的尾部,而删除操作(出队)发生在队列的头部。
普通队列是一种线性队列,它使用数组或链表来实现。
当队列满时,无法插入新的元素。
循环队列是一种巧妙地解决了普通队列满的问题的队列。
它使用循环数组实现,当队列满时,插入操作将在数组的开头继续。
问题四:请解释树的概念。
并介绍二叉树和二叉搜索树。
答:树是一种非线性数据结构,它由一组节点组成,节点之间存在层次关系。
树的顶部节点称为根节点,每个节点可以有0个或多个子节点。
二叉树是一种特殊的树,每个节点最多有两个子节点。
这两个子节点被称为左子节点和右子节点。
二叉搜索树是一种特殊的二叉树,它的左子树上的节点的值都小于根节点的值,右子树上的节点的值都大于根节点的值。
这种排列方式使得在二叉搜索树中进行搜索操作非常高效。
问题五:请解释图的概念,并介绍有向图和无向图。
答:图是一种非线性数据结构,由节点和边组成。
数据结构考试重点必背
数据结构考试重点必背在数据结构考试中,掌握并熟练运用一些重点概念和知识点是非常关键的。
这些重点知识点不仅能够帮助我们对数据结构的基本概念有深入的理解,还能够在解决实际的编程问题中发挥重要作用。
本文将详细介绍数据结构考试中的一些重点知识点,供大家参考。
一、线性表1. 线性表的定义和基本操作:线性表是由n个数据元素构成的有限序列,其中n为表的长度。
基本操作包括插入、删除、查找等。
2. 顺序存储结构与链式存储结构:顺序存储结构使用数组实现,查找效率高;链式存储结构使用链表实现,插入删除效率高。
3. 单链表、双链表与循环链表:单链表每个节点只有一个指针指向下一个节点,双链表每个节点有两个指针分别指向前一个和下一个节点,循环链表将尾节点的指针指向头节点。
二、栈和队列1. 栈的定义和基本操作:栈是一种特殊的线性表,只允许在一端进行插入和删除操作,称为栈顶。
基本操作包括入栈和出栈。
2. 栈的应用:括号匹配、四则运算表达式求值、迷宫求解等。
3. 队列的定义和基本操作:队列是一种特殊的线性表,采用先进先出的原则。
基本操作包括入队和出队。
4. 队列的应用:生产者消费者问题、打印任务调度等。
三、树与二叉树1. 树的定义和基本概念:树是n(n >= 0)个节点的有限集合,其中存在唯一的根节点,其余节点构成m个互不相交的子集,每个集合本身又可以看作一棵树。
2. 二叉树的基本概念:二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别为左子节点和右子节点。
3. 二叉树的遍历方式:前序遍历、中序遍历和后序遍历。
遍历过程分别为先遍历根节点、先遍历左子树再遍历右子树、先遍历右子树再遍历左子树。
四、图1. 图的定义和基本概念:图是由节点和边组成的一种数据结构,用于描述事物之间的关系。
节点表示事物,边表示事物之间的联系。
2. 图的分类:无向图、有向图、带权图等。
3. 图的遍历方式:深度优先遍历和广度优先遍历。
深度优先遍历使用栈实现,广度优先遍历使用队列实现。
链表基数排序
链表基数排序链表是一种常用的数据结构,可以用来存储和操作数据。
而基数排序是一种排序算法,通过将数据按照位数进行排序,从而达到排序的目的。
本文将介绍链表基数排序的原理和实现过程。
一、基数排序简介基数排序是一种非比较型的排序算法,其基本思想是将待排序的数据按照权重进行分组,依次对每一位进行排序,直到所有的位都排序完成。
基数排序的时间复杂度为O(d*(n+r)),其中d是数字的位数,n是数据的个数,r是基数的大小。
链表基数排序是基于链表的数据结构进行排序的一种方法。
其主要思想是通过将待排序的数据放入链表中,然后按照权重进行分组,并依次对每一位进行排序,直到所有的位都排序完成。
具体的实现过程如下:1. 创建一个链表数组,用于存储待排序的数据。
数组的大小等于基数的大小。
2. 将待排序的数据按照个位数的大小,放入对应的链表中。
3. 依次取出链表中的数据,按照十位数的大小,放入对应的链表中。
4. 依次重复上述步骤,直到所有的位都排序完成。
5. 最后将链表中的数据按照顺序取出,即可得到排序后的结果。
三、链表基数排序的实现下面以一个示例来说明链表基数排序的实现过程。
假设有以下一组数据:85,65,45,95,35,75,551. 创建一个链表数组,大小为10,用于存储待排序的数据。
2. 将待排序的数据按照个位数的大小,放入对应的链表中,得到如下结果:链表0:无数据链表1:无数据链表2:无数据链表3:35链表4:45链表5:55,65,75,85,95链表6:无数据链表7:无数据链表8:无数据链表9:无数据3. 依次取出链表中的数据,按照十位数的大小,放入对应的链表中,得到如下结果:链表0:无数据链表1:无数据链表2:35,45,55链表3:无数据链表4:65,75链表5:85,95链表6:无数据链表7:无数据链表8:无数据链表9:无数据4. 依次重复上述步骤,直到所有的位都排序完成。
这里只需进行一次操作,即按照百位数的大小进行排序,得到最终的结果:链表0:35,45,55,65,75,85,95链表1:无数据链表2:无数据链表3:无数据链表4:无数据链表5:无数据链表6:无数据链表7:无数据链表8:无数据链表9:无数据最终的排序结果为:35,45,55,65,75,85,95四、总结链表基数排序是一种通过链表数据结构实现的排序算法,其主要思想是将待排序的数据按照位数进行分组,并依次对每一位进行排序,直到所有的位都排序完成。
数据结构考试要点
数据结构考试要点一、概述数据结构是计算机科学的重要基础学科,研究的是数据元素和数据元素之间的关系,以及数据在计算机内存中的存储和组织方式。
数据结构的掌握对于计算机专业的学生来说至关重要。
下面将介绍数据结构考试的要点,帮助大家更好地备考。
二、线性表线性表是数据结构中最基本的概念之一,它是一种有序的数据元素集合。
线性表的常见类型包括顺序表和链表。
考试中常涉及到线性表的建立、插入、删除、查找和遍历等操作,掌握这些基本操作是非常重要的。
三、栈和队列栈和队列是线性表的特殊形式,它们分别具有后进先出和先进先出的特性。
栈的基本操作包括入栈和出栈,而队列的基本操作包括入队和出队。
在考试中,需要了解它们的实现方式,以及如何利用栈和队列解决实际问题。
四、树结构树是一种非线性结构,它由若干个节点组成,每个节点可以有若干个子节点。
树的常见类型有二叉树、二叉搜索树和平衡二叉树等。
在数据结构考试中,需要了解这些树的基本概念、特性以及它们的遍历方式。
五、图结构图是一种非线性结构,它由若干个节点和边组成,节点表示实体,边表示节点之间的关系。
图可以分为有向图和无向图。
在考试中,常常涉及到图的遍历、最短路径算法和最小生成树算法等内容。
六、排序算法排序算法是数据结构中非常重要的内容,常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序和归并排序等。
在考试中,需要了解这些排序算法的原理、实现和时间复杂度等。
七、查找算法查找算法是在数据集合中寻找特定元素的算法,常见的查找算法包括顺序查找和二分查找。
在数据结构考试中,需要熟悉这些查找算法的过程、复杂度以及它们的应用场景。
八、图算法图算法是对图进行各种操作和分析的算法,常见的图算法包括深度优先搜索和广度优先搜索等。
在考试中,需要了解这些图算法的原理、实现和应用。
九、高级数据结构除了基本数据结构外,考试中还可能涉及到高级数据结构的内容,比如哈希表、堆、红黑树等。
了解这些高级数据结构的特点和使用场景对于备考非常重要。
数据结构链表的基本操作(附答案)
{int coef;
int exp;
struct Polynode *next;
}Polynode,*Polylist;
Polylist PolyCreate()
{Polynode *head;
Polynode *rear, *s;
int c,e;
head=(Polynode*)malloc(sizeof(Polynode));
{
Polynode *p, *q, *pre, *temp;
int sum;
p=polya->next; /*令p和q分别指向polya和polyb多项式链表中的第一个结点*/
scanf("%d,%d",&c,&e);
}
rear->next=NULL;/*将表的最后一个结点的next置NULL,以示表结束*/
return head;}
Polylist PolyAdd(Polylist polya, Polylist polyb)
/*此函数用于将两个多项式相加,然后将和多项式存放在多项式polya中,并将多项式ployb删除*/
q=q->next; //___________________;
free(temp);
}
else
{
temp=p;
p=p->next;
free(temp);
/*若系数和为零,则删除结点p与q,并将指针指向下一个结点*/
temp=q;
q=q->next; //___________________________
else if(head->exp==0)
数据结构知识点面试技巧
数据结构知识点面试技巧一、引言在计算机科学与软件工程领域中,数据结构是一门核心的基础课程。
掌握数据结构的知识点对于软件工程师的面试非常重要。
本文将介绍一些关键的数据结构知识点,并提供一些面试技巧,帮助读者在面试中脱颖而出。
二、线性数据结构1. 数组(Array)数组是一种最基本的数据结构,它在内存中以连续的方式存储一系列相同类型的元素。
在面试中,你可能会被问到数组的优缺点、时间复杂度以及如何使用数组解决问题等。
2. 链表(Linked List)链表是一种动态数据结构,它通过节点之间的指针链接来存储数据。
在面试中,你可能会被问到链表的类型、插入和删除节点的操作复杂度、如何判断链表是否有环等。
3. 栈(Stack)栈是一种后进先出(LIFO)的数据结构,它只允许从表的一端进行插入和删除操作。
在面试中,你可能会被问到栈的应用场景、栈的实现方式以及如何使用栈解决问题等。
4. 队列(Queue)队列是一种先进先出(FIFO)的数据结构,它允许在一端进行插入操作,在另一端进行删除操作。
在面试中,你可能会被问到队列的应用场景、队列的实现方式以及如何使用队列解决问题等。
5. 哈希表(Hash Table)哈希表是一种通过哈希函数将键映射到值的数据结构,它提供了快速的插入、删除和查找操作。
在面试中,你可能会被问到哈希表的实现原理、冲突解决方法、哈希函数的设计等。
三、树结构1. 二叉树(Binary Tree)二叉树是一种每个节点最多有两个子节点的树结构。
在面试中,你可能会被问到二叉树的遍历方式、平衡二叉树的定义、二叉搜索树的性质等。
2. 堆(Heap)堆是一种特殊的树结构,它可以快速找到最大或最小的元素。
在面试中,你可能会被问到堆的实现方式、堆的操作复杂度、堆排序算法等。
3. 图(Graph)图是一种由节点和边组成的数据结构,它用于描述元素之间的关系。
在面试中,你可能会被问到图的遍历方式、图的表示方法、图的最短路径算法等。
2010年贵州省JAVA版数据结构考试技巧与口诀
23、已知关键字序列为{66,82,25,51,98,108},利用快速排序方法,以第一个元素为基准得到的一趟排序结果为
A.{25,51,66,82,98,108}
B.{25,51,66,98,82,108}
C.{51,25,66,108,98,82}
(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进 C.分析算法的易读性和文档性
(2)A.空间复杂度和时间复杂度 B.正确性和简明性
C.可读性和文档性 D.数据复杂性和程序复杂性
6、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行 B 操作与链表的长度有关。
13、下列选项中,其平均查找性能与基于二叉排序树的查找相当的是
A.二分查找 B.顺序查找 C.分块查找 D.索引顺序查找
14、从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A.O(1) B.O(n)
C.O(1Ogzn) D.O(n2)
A.逻辑 B.存储 C.逻辑和存储 D.物理
41、广义表A=(x,((y),((a)),A))的深度是
A.2 B.3 C.4 D.∞
42、数据结构中,从逻辑上可以把数据结构分成(?)。
?A.动态结构和静态结构?B.紧凑结构和非紧凑结构?C.线性结构和非线性结构?D.内部结构和外部结构
A.整形 B.引用型
C.指针型 D.常值引用型?
35、深度为k的完全二叉树至多有( )个结点
A B C D
36、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A) O(n2) B) O(n)
C) O(m*n) D)O(1)
38、设给定问题的规模为变量n,解决该问题的算法所需时间为Tn=O(f(n)),Tn表示式中记号O表示( A )。
A)一个数量级别 B)一个平均值
A)q->next=s; s->next=p; B)s->next=p->next; p->next=s;
C)p->next=s->next; s->next=p D)p->next=s; s->next=q;
13、用一维数组A进行顺序存储时,若起始地址为loc(A1),元素长度为c,则A的第i个数组单元在存放地址loc(Ai),等于( B )。
A)2i B)2i C)2i-1 D)2i-1
5、在一个链队列中,假定front和rear分别为队首和队尾指针,则插入一个结点的操作为( B )。
A)front=front->next; B) rear=rear->next;
C) rear=front->next; D) front=rear->next ;
32、下列各种数据结构中属于线性结构的有( A )。
A)栈 B) 二叉树
C) 广义表 D) 图
33、在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行( A ) 。
A)直接选择排序 B)直接插入排序
C)快速排序 D)起泡排序
35、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
36、n个顶点的图的最小生成树必定( D ),是不正确的描述。
6、n个顶点,e条边的有向图的邻接矩阵中非零元素有( C )个。
A)n B)2e C)e D) n+e
7、设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为( A )。
A)p->next=p->next->next; B) p=p->next;
16、向一个栈顶指针为hs的链栈中插入一个s结点时,应执行( D )。
A) hs->next=s; B) s->next=hs->next; hs->next=s;
C) s->next=hs; hs=s; D) s->next=hs; hs=hs->next;
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
37、下面程序段的时间复杂度是( A )。
s =0;
for( i =0; i<n; i++)
for(j=0;j<n;j++)
s +=B[i][j];
3、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]
C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]
4、二叉树第i(i≥1)层上至多有( C )结点。
C)队列 D)树
28、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A) 单链表 B) 仅有头指针的单循环链表
C) 双链表 D) 仅有尾指针的单循环链表
17、在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为( C )。
A)4 B)5
C)6 D)7
18、串的逻辑结构与( D )的逻辑结构不相同。
A)线性表 B)栈
A)2i B)2i C)2i-1 D)2i-1
41、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( D )存储方式最节省时间。
A)顺序表 B)双链表 C)带头结点的双循环链表 D)单循环链表
42、n个顶点,e条边的有向图的邻接矩阵中非零元素有( C )个。
C) D->Rchild=Null D) D->ltag=0
21、在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为( C )。
A)4 B)5
C)6 D)7
22、采用链结构存储线性表时,其地址( B )。
A)n B)2e C)e D) n+e
43、串的逻辑结构与( D )的逻辑结构不相同。
A)线性表 B)栈
C)队列 D)集合
44、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)B为A的双亲,则B的度为( B )。
A)3 B)4 C)5 D)1
A)LIFO B)FIFO
C)FCFS D)HPF
31、设给定问题的规模为变量n,解决该问题的算法所需时间为Tn=O(f(n)),Tn表示式中记号O表示( A )。
A)一个数量级别 B)一个平均值
C)一个最大值 D)一个均方值
C) rear=front->next; D) front=rear->next ;
15、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( A )。
A)p->next=p->next->next B)p=p->next
C)p=p->nexe->next D)p->next=p
C)队列 D)集合
19、与无向图相关的术语有( C )。
A)强连通图 B)入度
C)路径 D)弧
20、线索二叉树中某结点D,没有左孩子的条件是( B )。
A)D->Lchild=Null B) D->ltag=1
9、以下属于顺序存储结构优点的是( A )。
A) 存储密度大 B) 插入运算方便
C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示
10、倘若在对串的插入、删除运算中,期望运算速度最快,则应采用( C )。
A)顺序表示法 B)单字符为结点的单链表表示法
A)loc(A1)+i*c B)loc(A1)+(i-1)*c
C)loc(A1)+i*c+1 D)loc(A1)+(i+1)*c
14、在一个链队列中,假定front和rear分别为队首和队尾指针,则插入一个结点的操作为( B )。
A)front=front->next; B) rear=rear->next;
C)等量分块表示法 D)不等量分块表示法
11、以下属于顺序存储结构优点的是( A )。
A) 存储密度大 B) 插入运算方便
C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示
12、在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行( A ) 。
C)线性表采用链接存储,不必占用一片连续的存储单元。
D)线性表采用顺序存储,便于进行插入和删除操作。
24、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( A )。
A)p->next=p->next->next B)p=p->next
C)p=p->nexe->next D)p->next=p
25、用一维数组A进行顺序存储时,若起始地址为loc(A1),元素长度为c,则A的第i个数组单元在存放地址loc(Ai),等于( B )。
A)loc(A1)+i*c B)loc(A1)+(i-1)*c
C)一个最大值 D)一个均方值
39、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
40、二叉树第i(i≥1)层上至多有( C )结点。
C)loc(A1)+i*c+1 D)loc(A1)+(i+1)*c
26、n个顶点的强连通图至少有( A )条边。
A)n B)n+1 C)n-1 D)n(n-1)
27、串的逻辑结构与( D )的逻辑结构不同。
A)线性表 B)栈
29、链式存储的存储结构所占存储空间( A )。
A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B)只有一部分,存放结点值
C)只有一部分,存储表示结点间关系的指针
D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
30、栈进行插入和删除操作的特点是( A )。
1、串的逻辑结构与( D )的逻辑结构不相同。
A)线性表 B)栈
C)队列 D)集合
2、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( D )存储方式最节省时间。
A)顺序表 B)双链表 C)带头结点的双循环链表 D)单循环链表
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
23、下面关于线性表的叙述中,错误的是哪一个?( D )
A)线性表采用顺序存储,必须占用一片连续的存储单元。
B)线性表采用链接存储,便于插入和删除操作。
C)p=p->next->next; D) p->next=p;
8、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。