数据结构复习要点(整理版).docx
数据结构复习要点(整理版)

数据结构复习要点(整理版)数据结构复习要点(整理版)数据结构是计算机科学中非常重要的一门课程,它涉及到各种数据的存储和组织方式,对于编程和算法的理解都至关重要。
本文将整理常见的数据结构复习要点,帮助读者回顾和加深对数据结构的理解。
一、线性结构线性结构是最简单的数据结构之一,它包括线性表、栈、队列等。
线性表是具有相同数据类型的一组元素的有限序列,它可以分为顺序表和链表。
顺序表是一种用连续的存储单元依次存储线性表的元素的数据结构,而链表则是通过每个元素中存储下一个元素的地址来实现线性关系。
栈和队列是线性结构的特殊形式。
栈是一种先进后出(LIFO)的数据结构,它可以通过顺序栈或链栈来实现。
队列是一种先进先出(FIFO)的数据结构,它可以通过顺序队列或链队列来实现。
二、树形结构树形结构是一种非线性结构,它具有层次关系,由节点和边组成。
常见的树形结构包括二叉树、二叉搜索树、平衡二叉树和哈夫曼树。
二叉树是每个节点最多只有两个子节点的树,它可以是空树、只有一个根节点的树或者一个根节点连接两棵不相交的二叉树。
二叉搜索树是一种特殊的二叉树,它的左子树上所有节点的值小于根节点的值,右子树上所有节点的值大于根节点的值。
平衡二叉树是一种特殊的二叉搜索树,它的左子树和右子树的高度差不超过1,这样可以保证在最坏情况下的查找效率。
哈夫曼树是一种特殊的二叉树,它的叶子节点代表字符,而各节点的权值表示字符出现的频率,通过构造哈夫曼树可以实现数据的压缩编码。
三、图形结构图形结构是一种包含节点和边的非线性数据结构,它由顶点集合和边集合组成。
图形结构可以分为无向图和有向图,每个节点可以有一个或多个相邻节点。
图形结构的常见算法有深度优先搜索(DFS)和广度优先搜索(BFS)。
深度优先搜索是一种通过递归或栈实现的搜索算法,它先访问起始节点的一个邻接节点,再依次访问该节点的未被访问过的邻接节点,直到所有节点都被访问过。
广度优先搜索则是一种通过队列实现的搜索算法,它先访问起始节点的所有邻接节点,再依次访问这些邻接节点的邻接节点,以此类推,直到所有节点都被访问过。
数据结构复习重点归纳

一、数据结构得章节结构及重点构成数据结构学科得章节划分基本上为:概论,线性表,栈与队列,串,多维数组与广义表,树与二叉树,图,查找,内排,外排,文件,动态存储分配.对于绝大多数得学校而言,“外排,文件,动态存储分配”三章基本上就是不考得,在大多数高校得计算机本科教学过程中,这三章也就是基本上不作讲授得。
所以,大家在这三章上可以不必花费过多得精力,只要知道基本得概念即可。
但就是,对于报考名校特别就是该校又有在试卷中对这三章进行过考核得历史,那么这部分朋友就要留意这三章了。
按照以上我们给出得章节以及对后三章得介绍,数据结构得章节比重大致为:概论:内容很少,概念简单,分数大多只有几分,有得学校甚至不考.线性表:基础章节,必考内容之一。
考题多数为基本概念题,名校考题中,鲜有大型算法设计题.如果有,也就是与其它章节内容相结合.栈与队列:基础章节,容易出基本概念题,必考内容之一。
而相联系进行考查。
串:基础章节,概念较为简单.专门针对于此章得大型算法设计题很少,较常见得就是根据KMP进行算法分析。
多维数组及广义表:基础章节,基于数组得算法题也就是常见得,分数比例波动较大,就是出题得“可选单元”或“侯补单元”.一般如果要出题,多数不会作为大题出.数组常与“查找,排序”等章节结合来作为大题考查。
树与二叉树:重点难点章节,各校必考章节。
各校在此章出题得不同之处在于,就是否在本章中出一到两道大得算法设计题。
通过对多所学校得试卷分析,绝大多数学校在本章都曾有过出大型算法设计题得历史。
图:重点难点章节,名校尤爱考。
如果作为重点来考,则多出现于分析与设计题型当中,可与树一章共同构成算法设计大题得题型设计。
查找:重点难点章节,概念较多,联系较为紧密,容易混淆。
出题时可以作为分析型题目给出,在基本概念型题目中也较为常见。
算法设计型题中可以数组结合来考查,也可以与树一章结合来考查。
排序:与查找一章类似,本章同属于重点难点章节,且概念更多,联系更为紧密,概念之间更容易混淆。
数据结构复习资料(亲自整理)

数据结构复习资料(亲自整理)1、链表是一种存储数据的链式结构,每个数据之间都是相关联的。
2、线性结构是一个有序数据元素的集合,包括线性表、栈、队列、双队列、数组和串。
3、树是由n(n>=1)个有限节点组成一个具有层次关系的集合,而二叉树是每个结点最多有两个子树的有序树。
二叉树与树的主要差别在于,二叉树结点的最大度数为2,而树中结点的最大度数没有限制;二叉树的结点有左、右之分,而树的结点无左、右之分。
4、堆是一种可以被看做一棵树的数组对象,总是满足某个节点的值总是不大于或不小于其父节点的值,且堆总是一棵完全二叉树。
5、二叉排序树是一种满足以下递归定义的二叉树:若左子树非空,则左子树所有节点的值均小于它的根节点;若右子树非空,则右子树所有节点的值均大于于它的根节点;左右子树也分别为二叉排序树。
1、在已知前序遍历和中序遍历的情况下,可以通过画树的方法求得后序遍历。
具体步骤如下:首先根据前序遍历的特点,确定根节点;然后观察中序遍历,将左子树和右子树分别确定下来;接着对左子树和右子树分别进行递归,直到遍历完所有节点,最后得到后序遍历。
2、树和二叉树之间可以相互转换。
将树转换为二叉树的方法是:对于每个节点,将其第一个孩子作为其左孩子,将其兄弟作为其右孩子。
将二叉树转换为树的方法是:对于每个节点,将其右孩子作为其兄弟。
3、二叉树线索化是将二叉树中的空指针指向该节点在中序遍历中的前驱或后继节点的过程。
在线索二叉树中,一个结点是叶结点的充要条件为:左、右标志均是1.4、邻接表是图的一种链式存储结构,用于表示图中每个节点的邻居节点。
每个节点都有一个链表,存储着与该节点相邻的节点。
邻接表是一种图的存储结构,对于每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边(对于有向图是以该顶点为尾的弧)。
邻接表中的表结点和头结点分别表示边和顶点,包含信息如下:表结点adjvex(邻接点)。
nextarc(指向下一个表结点)(权值等信息);头结点data(顶点信息)和firstarc(指向第一个表结点)。
【2331】数据结构各章考试复习要点(打印版)

【2331】数据结构考试要点概论- 基本概念和术语(一)数据(Data)数据是信息的载体。
它能够被计算机识别、存储和加工处理,是计算机程序加工的"原料"。
随着计算机应用领域的扩大,数据的范畴包括:整数、实数、字符串、图像和声音等。
数据元素(Data Element)数据元素是数据的基本单位。
数据元素也称元素、结点、顶点、记录。
一个数据元素可以由若干个数据项(也可称为字段、域、属性)组成。
数据项是具有独立含义的最小标识单位。
数据结构(Data Structure)数据结构指的是数据之间的相互关系,即数据的组织形式。
1.数据结构一般包括以下三方面内容:①数据元素之间的逻辑关系,也称数据的逻辑结构(Logical Structure);数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。
数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
②数据元素及其关系在计算机存储器内的表示,称为数据的存储结构(Storage Structure);数据的存储结构是逻辑结构用计算机语言的实现(亦称为映象),它依赖于计算机语言。
对机器语言而言,存储结构是具体的。
一般,只在高级语言的层次上讨论存储结构。
③数据的运算,即对数据施加的操作。
数据的运算定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。
最常用的检索、插入、删除、更新、排序等运算实际上只是在抽象的数据上所施加的一系列抽象的操作。
所谓抽象的操作,是指我们只知道这些操作是"做什么",而无须考虑"如何做"。
只有确定了存储结构之后,才考虑如何具体实现这些运算。
为了增加对数据结构的感性认识,下面举例来说明有关数据结构的概念。
【例1.1】学生成绩表,见下表。
注意:在表中指出数据元素、数据项、开始结点和终端结点等概念(1)逻辑结构表中的每一行是一个数据元素(或记录、结点),它由学号、姓名、各科成绩及平均成绩等数据项组成。
数据结构复习要点(汇总版)

第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。
2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
(补充:一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
(有时候也叫做属性。
)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。
2.线性结构:结构中的数据元素之间存在“一对一“的关系。
若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。
3.树形结构:结构中的数据元素之间存在“一对多“的关系。
若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。
4.图状结构:结构中的数据元素存在“多对多”的关系。
若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。
逻辑结构可以映射为以下两种存储结构:1.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。
不要求逻辑上相邻的数据元素物理位置上也相邻。
数据结构复习要点(整理版)

第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。
2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
(补充:一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
(有时候也叫做属性。
)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。
2.线性结构:结构中的数据元素之间存在“一对一“的关系。
若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。
3.树形结构:结构中的数据元素之间存在“一对多“的关系。
若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。
4.图状结构:结构中的数据元素存在“多对多”的关系。
若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。
逻辑结构可以映射为以下两种存储结构:1.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。
不要求逻辑上相邻的数据元素物理位置上也相邻。
(完整word版)数据结构复习要点(汇总版),推荐文档.docx

1.顺序存储结构 :把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2.链式存储结构:借助指针表达数据元素之间的逻辑关系。不要求逻辑上相邻的数据元素物
3.树形结构 :结构中的数据元素之间存在“一对多“的关系。若数据为非空集,则除了第一
个元素 (根)之外,其它 每个数据元素都只有一个直接前驱, 以及多个或零个 直接后继。
4.图状结构 :结构中的数据元素存在“多对多”的关系。若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
结点定义:
typedef int datatype;//结点数据类型,假设为int
typedef struct node {//结点结构
datatype data;
struct node *next;//双向链表还应加上*previous
3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也
叫做属性。)
4.数据结构 :数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
2 / 13
插入:p->next=head->next;head->next=p;
输出:printf(“%d”,p->data);
删除:q=p->next;p->next = q->next ;free(q);
数据结构复习提纲(整理)

复习提纲第一章数据结构概述基本概念与术语(P3)1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2.数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2.数据元素是数据的基本单位3.数据对象相同性质的数据元素的集合4.数据结构包括三方面内容:数据的逻辑结构.数据的存储结构.数据的操作. (1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5.时间复杂度分析--------------------------------------------------------------------------------------------------------------------1、名词解释:数据结构、二元组2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。
3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。
4、以下程序段的时间复杂度为___O(N2)_____。
int i,j,x;for(i=0;i<n:i++) n+1for(j=0;j<n;j++) n+1x+=i;------------------------------------------------------------------------------------------------------------------第二章线性表1.顺序表结构由n(n>=0)个具有相同性质的数据元素a1,a2,a3……,an组成的有穷序列//顺序表结构#define MAXSIZE 100typedef int DataType;Typedef struct{DataType items[MAXSIZE];Int length;}Sqlist,*LinkList;//初始化链表void InitList(LinkList *L){(*L)=(LinkList)malloc(sizeof(LNode));if(!L){cout<<”初始化失败!”;return;}(*L)->next=NULL;}//插入数据void InsertList(LinkList L,int pos,DataType x){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”插入位置错误”;return;}InitList(&q);q->next=p->next;p->next=q;q->data=x;}//销毁链表void DestoryList(LinkList L){LinkList t;while(L){t=L;L=L->next;free(t);}}//遍历链表void TraverseList(LinkList L){LinkList t=L;while(L){t=t->next;cout<<t->data<<” ”;}cout<<endl;}//删除元素void DeleteList(LinkList L,int pos){LinkList p=L,q;int i=0;while(p&&i<pos-1){p=p->next;i++;}if(!p||i>pos-1){cout<<”删除位置错误!!”;return;}q=p->next;p->next=q->next;free(q):}第三章栈和队列1.栈(1)栈的结构与定义(2)顺序栈操作算法:入栈、出栈、判断栈空等(3)链栈的结构与定义2.队列(1)队列的定义----------------------------------------------------------------------------------------------------------------1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A. BCDAEB. EDACBC. BCADED. AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A. TOP==STACKSIZEB. TOP==1C. TOP==0D. TOP==-13、允许在一端插入,在另一端删除的线性表称为____队列____。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。
2. 数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
(补充:一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
(有时候也叫做属性。
)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1. 集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系。
2. 线性结构:结构中的数据元素之间存在“一对一“的关系。
若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。
3. 树形结构:结构中的数据元素之间存在“一对多“的关系。
若数据为非空集,则除了第一个元素 (根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。
4. 图状结构:结构中的数据元素存在“多对多”的关系。
若结构为非空集,折每个数据可有多个(或零个)直接后继。
(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。
逻辑结构可以映射为以下两种存储结构:1. 顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系。
2. 链式存储结构:借助指针表达数据元素之间的逻辑关系。
不要求逻辑上相邻的数据元素物理位置上也相邻。
5. 时间复杂度分析:1.常量阶:算法的时间复杂度与问题规模n 无关系T(n)=O(1)2. 线性阶:算法的时间复杂度与问题规模n 成线性关系T(n)=O(n)3. 平方阶和立方阶:一般为循环的嵌套,循环体最后条件为i++ 时间复杂度的大小比较:O(1)< O(log 2 n)< O(n )< O(n log 2 n)< O(n2)< O(n3)< O(2 n )<O(n!)<O(n n)6. 算法与程序:(1)算法的5 个特性1、输入:有零个或多个输入2、输出:有一个或多个输出3、有穷性:要求序列中的指令是有限的;每条指令的执行包含有限的工作量;整个指令序列的执行在有限的时间内结束。
(程序与算法的区别在于,程序不需要有有穷性)4、确定性:算法中的每一个步骤都必须是确定的,而不应当含糊、模棱两可。
没有歧义。
5、可行性:算法中的每一个步骤都应当能被有效的执行,并得到确定的结果。
(2).算法设计的要求:1、正确性(达到预期效果,满足问题需求)2、健壮性(能处理合法数据,也能对不合法的数据作出反应,不会产生不可预期的后果)3、可读性(要求算法易于理解,便于分析)4、可修改可扩展性5、高效率(较好的时空性能)补充内容:1、名词解释:数据结构、二元组数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。
二元组就是一种用来表示某个数据对象以及各个元素之间关系的有限集合。
2、根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。
3、常见的数据存储结构一般有两种类型,它们分别是顺序存储结构、链式存储结构6. 在一般情况下,一个算法的时间复杂度是问题规模的函数7. 常见时间复杂度有:常数阶O (1 )、线性阶O (n)、对数阶O (Iog 2 n )、平方阶O(n^2)、指数阶O(2^n) 。
通常认为,具有常数阶量级的算法是好算法,而具有指数阶量级的算法是差算法。
第二章线性表定义:线性表是n 个数据元素的有限序列。
一个数据元素可由若干个数据项组成。
1. 顺序表结构线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。
2. 单链表( 1 ) 链表结点结构线性表中的数据元素可以用任意的一组存储单元来存储,用指针表示逻辑关系逻辑相邻的两元素的存储空间可以是不连续的。
( 2) 初始化:链表操作算法:初始化、插入、输出、删除、遍历p=(struct student *)maIIoc(sizeof(struct student));插入:p->next=head->next; head->next=p; 输出:printf( “%d ”,p->data);删除:q=p->next; p->next = q->next ; free(q); 结点遍历:for(p=head;p;p=p->next);补充内容:1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。
2、在一个单链表中,若P所指结点是q所指结点的前驱结点,则删除结点q的操作语句为P->next = q->next ; free(q);3、在长度为N 的顺序表中,插入一个新元素平均需要移动表中N/2 个元素,删除一个元素平均需要移动(N-1 )/2 个元素。
4、若线性表的主要操作是在最后一个元素之后插入一个元素或删除最后一个元素,则采用顺序表存储结构最节省运算时间。
5、已知顺序表中每个元素占用3个存储单元,第13 个元素的存储地址为336,则顺序表的首地址为300。
(第n 个元素的地址即首地址+(n-1)* 每个元素的存储空间,如a[12] (第13 个元素)的地址=a[0]+12*3 )6、设有一带头结点单链表L,请编写该单链表的初始化,插入、输出和删除函数。
(函数名自定义)结点定义:tyPedef int datatyPe; //结点数据类型,假设为inttyPedef struct node { //结点结构datatyPe data;struct node *next; // 双向链表还应加上*Previous} Lnode, * Pointer ; // 结点类型,结点指针类型tyPedef Pointer lklist; //单链表类型,即头指针类型1. 初始化:lklist initlist() {Pointer head;head=new node;//这是C++ 做法//head=( Pointer)malloc(sizeof(Lnode)); 这是C 语言做法head->next=NULL; //循环链表则是head->next=head;//双向链表应加上head->Previos=NULL;return head;}2. 插入:(C语言中需要把head转化为全局变量才能实现此程序)int insert(lklist head,datatyPe x,int i){Pointer q,s;q=get(head,i-1); //找第i-1 个点if(q==NULL) //无第i-1 点,即i<1 或i>n+1 时{cout<<"非法插入位置!∖n”〃这是C++做法,即C语言中的Printf(非法插入位置!∖n”;return 0;}s=new node;// 生成新结点即C 语言中的s=( pointer)malloc(sizeof(Lnode));s->data=x;s->next=q->next; //新点的后继是原第i 个点q->next=s; //原第i-1 个点的后继是新点return 1; //插入成功}3. 删除:(C语言中需要把head转化为全局变量才能实现此程序)int delete(lklist head,int i) {pointer p,q;q=get(head,i-1); //找待删点的直接前趋if(q==NULL || q->next==NULL) //即i<1 或i>n 时{cout<< ”非法删除位置!\n ” ;return 0;}p=q->next; //保存待删点地址q->next=p->next; // 修改前趋的后继指针delete p; //释放结点即C 语言中的free(p);return 1; //删除成1. 不带头结点的单链表head 为空的判定条件是(A )A. head=NULLB. head->next=NULLC. head->next=headD. head!=NULL2. 带头结点的单链表head 为空的判定条件是(B )A. head=NULLB. head->next=NULLC. head->next=headD. head!=NULL3. 在一个单链表中,若P所指结点不是最后结点,在P之后插入S所指结点,则执行(B)A. s->next=p; p->next=s;B. s->next=p->next; p->next=s;C. S->next=P->next; P=S;D. P->next=S; S->next=P;4. 在一个单链表中,若删除P所指结点的后续结点,则执行(A )A. P->next=P->next->next;B. P=P->next; P->next=P->next->next;C. P->next=P->nextD. P=P->next->next5. 从一个具有n 个结点的有序单链表中查找其值等于x 结点时,在查找成功的情况下,需平均比较( B )个结点。
A. nB. n/2C. (n-1)/2D. O(n Iog 2n)6. 给定有n 个元素的向量,建立一个有序单链表的时间复杂度( B)A.O(1)B.O(n)C.O(n2)D.O(n g 2n)7. 在一个具有n 个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A.O(1)B.O(n)C.O(n2)D.O(n g 2n)8. 在一个单链表中删除q 所指结点时,应执行如下操作:q=P->next;P->next=( P->next->next );free(q);//这种题目靠一根指针是没有办法完成的,必须要借助第二根指针。