2010西藏自治区C与数据结构链表考资料
2010年西藏自治区C#语言入门

1、有一个带头结点的单链表,每个结点包括两个域,一个是整型域info,另一个是指向下一个结点的指针域next。
假设单链表已建立,设计算法删除单链表中所有重复出现的结点,使得info域相等的结点只保留一个。
#include <stdio.h>typedef char datatype;typedef struct node{datatype data;struct node * next;} listnode;typedef listnode* linklist;/*--------------------------------------------*//* 删除单链表中重复的结点 *//*--------------------------------------------*/linklist deletelist(linklist head){ listnode *p,*s,*q;p=head->next;while(p){s=p;q=p->next;while(q)if(q->data==p->data){s->next=q->next;free(q);q=s->next;}else{ s=q; /*找与P结点值相同的结点*/q=q->next;}p=p->next;}return head;}2、后序遍历最后访问根结点,即在递归算法中,根是压在栈底的。
采用后序非递归算法,栈中存放二叉树结点的指针,当访问到某结点时,栈中所有元素均为该结点的祖先。
本题要找p和q 的最近共同祖先结点r ,不失一般性,设p在q的左边。
后序遍历必然先遍历到结点p,栈中元素均为p的祖先。
将栈拷入另一辅助栈中。
再继续遍历到结点q时,将栈中元素从栈顶开始逐个到辅助栈中去匹配,第一个匹配(即相等)的元素就是结点p 和q的最近公共祖先。
typedef struct{BiTree t;int tag;//tag=0 表示结点的左子女已被访问,tag=1表示结点的右子女已被访问}stack;stack s[],s1[];//栈,容量够大BiTree Ancestor(BiTree ROOT,p,q,r)//求二叉树上结点p和q的最近的共同祖先结点r。
2010年10月自考数据结构试题及答案

1 / 72010年10月全国自考数据结构试题课程代码:02331一、单项选择题(本大题共15小题,每小题2分,共30分) 1.数据的四种存储结构是(A )A.顺序存储结构、链接存储结构、索引存储结构和散列存储结构B.线性存储结构、非线性存储结构、树型存储结构和图型存储结构C.集合存储结构、一对一存储结构、一对多存储结构和多对多存储结构D.顺序存储结构、树型存储结构、图型存储结构和散列存储结构2.若对某线性表最常用的操作是在最后一个结点之后插入一个新结点或删除最后一个结点,要使操作时间最少,下列选项中,应选择的存储结构是(C ) A.无头结点的单向链表 B.带头结点的单向链表 C.带头结点的双循环链表D.带头结点的单循环链表3.若带头结点的单链表的头指针为head ,则判断链表是否为空的条件是(B ) A.head=NULL B.head->next=NULL C.head!=NULLD.head->next!=head4.若元素的入栈顺序为1,2,3....,n ,如果第2个出栈的元素是n ,则输出的第i(1<=i<=n)个元素是(D )A.n-iB.n-i+lC.n-i+2D.无法确定5.串匹配算法的本质是(C )A.串复制B.串比较C.子串定位D.子串链接6.设有一个10阶的对称矩阵A ,采用行优先压缩存储方式,a 11为第一个元素,其存储地址为1,每个元素占一个字节空间,则a 85的地址为(C ) A.13 B.18 C.33D.407.若一棵二叉树的前序遍历序列与后序遍历序列相同,则该二叉树可能的形状是(B ) A.树中没有度为2的结点 B.树中只有一个根结点 C.树中非叶结点均只有左子树D.树中非叶结点均只有右子树8.若根结点的层数为1,则具有n 个结点的二叉树的最大高度是(A )A.nB.2log n ⎢⎥⎣⎦C.2log n ⎢⎥⎣⎦+1D.n/2 9.在图G 中求两个结点之间的最短路径可以采用的算法是(A )2 / 7A.迪杰斯特拉(Dijkstra )算法B.克鲁斯卡尔(Kruskal )算法C.普里姆(Prim)算法D.广度优先遍历(BFS)算法10.下图G=(V,E)是一个带权连通图,G 的最小生成树的权为(D ) A.15 B.16 C.17 D.1811.在下图中,从顶点1出发进行深度优先遍历可得到的序列是(B ) A.1 2 3 4 5 6 7 B.1 4 2 6 3 7 5 C.1 4 2 5 3 6 7 D.1 2 4 6 5 3 712.如果在排序过程中不改变关键字相同元素的相对位置,则认为该排序方法是(B ) A.不稳定的 B.稳定的 C.基于交换的D.基于选择的13.设有一组关键字(19, 14, 23, 1,6,20, 4,27, 5,11, 10, 9),用散列函数H(key)=key%13构造散列表,用拉链法解决冲突,散列地址为1的链中记录个数为(C ) A.1 B.2 C.3D.414.已知二叉树结点关键字类型为字符,下列二叉树中符合二叉排序树性质的是(D)15.若需高效地查询多关键字文件,可以采用的文件组织方式为(D)A.顺序文件B.索引文件C.散列文件D.倒排文件二、填空题(本大题共10小题,每小题2分,共20分)16.下面程序段的时间复杂度为(O(n))。
西藏自治区考研计算机科学与技术复习资料数据结构与算法精讲

西藏自治区考研计算机科学与技术复习资料数据结构与算法精讲西藏自治区考研计算机科学与技术复习资料:数据结构与算法精讲一、介绍计算机科学与技术是当今信息社会不可或缺的重要学科,而考研对于想要深入学习和研究计算机科学与技术的同学们来说,是一个重要的机会。
本文将为各位考研人士提供一份关于数据结构与算法的精讲资料,帮助大家更好地复习和掌握这个重要的考试内容。
二、数据结构基础知识1. 线性表线性表是数据结构中最基本的一种结构,它包括顺序表和链表两种形式。
顺序表以数组的形式进行存储,而链表则是通过指针将节点连接在一起。
2. 栈和队列栈和队列是线性表的特殊形式,栈是一种先进后出(LIFO)的数据结构,而队列则是一种先进先出(FIFO)的数据结构。
三、常见数据结构1. 链表链表是一种动态分配内存空间的数据结构,包括单向链表、双向链表和循环链表等形式。
链表具有插入、删除的操作效率高的特点。
2. 树树是一种非线性的数据结构,具有层次性、唯一性和递归性等特点。
常见的树结构包括二叉树、二叉搜索树、堆和AVL树等。
3. 图图是一种由节点和边组成的数据结构,节点可以表示对象,边则表示对象之间的关系。
图可以分为有向图和无向图,常见的图算法包括深度优先搜索和广度优先搜索等。
4. 哈希表哈希表是一种通过关键字直接访问存储位置的数据结构,它通过哈希函数将关键字映射为存储位置。
哈希表具有查找效率高的特点。
四、常见算法1. 排序算法排序算法是计算机科学中最基础、最常用的算法之一。
常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序和归并排序等。
2. 查找算法查找算法用于在一组数据中查找指定元素的位置。
常见的查找算法包括顺序查找、二分查找和哈希查找等。
3. 图算法图算法主要用于解决图相关的问题,如最短路径问题和最小生成树问题。
常见的图算法包括深度优先搜索算法和广度优先搜索算法等。
五、复习方法和注意事项1. 系统性学习复习数据结构与算法时,要先理解其基本概念和原理,再通过实例和习题来加深对概念和原理的理解。
西藏自治区考研计算机科学与技术复习资料数据结构重难点解析

西藏自治区考研计算机科学与技术复习资料数据结构重难点解析西藏自治区考研计算机科学与技术复习资料:数据结构重难点解析数据结构是计算机科学与技术领域中的核心基础知识,是考研学习中的重点和难点之一。
本文将针对西藏自治区考研计算机科学与技术专业的学生,解析数据结构的重难点,帮助大家更好地复习和准备考试。
一、线性表1. 顺序表顺序表是数据结构中最基本的一种结构,其内存分配连续且具有随机访问的特点。
复习时需重点掌握顺序表的插入和删除操作、动态扩容的实现原理以及顺序表和链表的比较。
2. 链表链表是另一种常见的线性结构,相比顺序表,链表具有内存分配灵活、插入删除操作高效等优点。
复习时需熟悉单链表、双向链表和循环链表的基本操作,掌握链表的反转和合并等高级操作。
3. 栈和队列栈和队列是两种特殊的线性表结构。
栈是一种后进先出(LIFO)的结构,而队列是一种先进先出(FIFO)的结构。
复习时需熟练掌握栈和队列的基本操作,了解它们在计算机系统中的应用,如函数调用栈和任务调度队列等。
二、树1. 二叉树二叉树是一种重要的非线性结构,它具有递归定义、层次遍历等特点。
复习时需重点掌握二叉树的建立和遍历算法,并了解二叉树的性质和常用操作,如求高度、判断是否为完全二叉树等。
2. 二叉查找树二叉查找树是一种经过排序的二叉树,它具有快速查找和插入等优点。
复习时需了解二叉查找树的定义和性质,熟悉其插入和删除操作,了解平衡二叉树和红黑树等变种。
3. 堆堆是一种特殊的树形结构,它具有非常重要的应用,如堆排序和优先队列等。
复习时需了解堆的定义和性质,熟悉堆的插入和删除操作,掌握堆排序算法的实现和性能分析。
三、图图是一种非线性结构,它由节点和边构成,具有很强的表达能力。
复习时需了解图的基本概念和表示方法,掌握图的遍历算法,了解最短路径和最小生成树等经典问题的解决算法。
四、查找和排序算法查找和排序算法是数据结构中的重要内容,也是考研中的重点。
复习时需熟悉顺序查找、二分查找和哈希查找等常用查找算法,掌握冒泡排序、插入排序、选择排序、快速排序和归并排序等经典排序算法的原理和实现。
西藏自治区考研计算机复习数据结构与算法详解

西藏自治区考研计算机复习数据结构与算法详解数据结构与算法是计算机科学与技术专业中非常重要的一门基础课程,它对于考研的计算机学子来说更是不能忽视的一门学科。
在考研过程中,掌握数据结构与算法的知识是取得好成绩的关键之一。
本文将详细解析西藏自治区考研的数据结构与算法复习内容,帮助考生系统地学习和理解这门课程。
一、线性表1. 顺序表顺序表是数据结构中的一种基本存储结构,它的特点是元素在存储空间中连续存放。
顺序表的操作包括插入、删除、查找等,考生需要掌握它的基本存储方式和相关操作。
2. 链表链表是数据结构中的另一种重要的存储结构,它的特点是元素在存储空间中分散存放,并通过指针进行连接。
链表的操作包括插入、删除、查找等,考生需要了解不同类型的链表以及它们的应用场景。
二、栈和队列1. 栈栈是一种后进先出(LIFO)的数据结构,它的操作包括入栈和出栈。
在考研过程中,考生需要了解栈的基本定义和使用场景,并能够运用栈解决相关问题。
2. 队列队列是一种先进先出(FIFO)的数据结构,它的操作包括入队和出队。
考生需要理解队列的基本概念和应用,能够进行有关队列的相关操作。
三、树1. 二叉树二叉树是一种特殊的树结构,每个节点最多有两个子节点。
考生需要掌握二叉树的定义、遍历方式以及常见的二叉树操作,如插入、删除等。
2. 红黑树红黑树是一种自平衡的二叉查找树,它具有良好的平衡性能和搜索效率。
考生需要了解红黑树的性质和操作,并能够应用红黑树解决相关问题。
四、图图是一种非常重要的数据结构,它由节点和边组成,用于描述事物之间的关系。
考生需要了解图的基本概念、存储方式和遍历算法,并能够应用图解决相关问题。
五、算法设计与分析1. 递归算法递归是一种常用的算法设计技巧,它将问题分解为更简单的子问题进行求解。
考生需要掌握递归算法的设计思路和正确的实现方式。
2. 动态规划动态规划是一种常用的求解最优化问题的算法思想,它利用子问题的最优解构建更大规模问题的最优解。
2010年山东省C与数据结构链表(必备资料)

4、深度为k的完全二叉树至多有( )个结点
A B C D
5、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HL
B. p一>next=HL;HL=p3
D.循环双链表
18、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行 B 操作与链表的长度有关。
A.删除单链表中的第一个元素
B.删除单链表中的最后一个元素
C.在单链表第一个元素前插入一个新元素
D.在单链表最后一个元素后插入一个新元素
19、在数据结构中,从逻辑上可以把数据结构分为 C 。
A)ABDECFG B)DBEAFCG
C)DEBFGCA D)GFCEBDA
17、如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。
A.只有表头指针没有表尾指针的循环单链表
B.只有表尾指针没有表头指针的循环单链表
C.非循环双链表
32、深度为k的完全二叉树至多有( )个结点
A B C D
33、一棵左子树为空的二叉树在前序线索化后,其空指针域个数为
A.0 B.1 C.2 D.不确定
3、算法分析的目的是 C ,算法分析的两个主要方面是 A 。
(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进 C.分析算法的易读性和文档性
(2)A.空间复杂度和时间复杂度 B.正确性和简明性
C.可读性和文档性 D.数据复杂性和程序复杂性
10、与单链表相比,双链表的优点之一是 D 。
A.插入、删除操作更简单
2010wgy《数据结构》总复习题参考答案

1
27.带有一个头结点的单链表 head 为空的条件是 28.在 hq 的链队列中,判定只有一个结点的条件是
head->next==NULL 带头结点
带头结点
29.在一个长度为 n 的循环链表中,删除其元素值为 x 的结点的时间复杂度为 __ O(n)____。 30.已知一棵二叉树的先序序列为 ABCD ,中序序列为 BCAD ,则它的后序序列为 __cbda____。 31.对关键字序列 (50, 34,92,19, 11,68,56, 41,79) 进行直接插入排序,当将第 7 个关键字 56 插入到当前的有序子表中时,为寻找插入位置需进行 ___3___次关键字之间的比较。 32.将有序表中 n 个元素依次插入到一棵空的二叉排序树中,则在等概率查找的情况下,该二叉排 序 树在查找成功时的平均查找长度是 __(n+1)/2____。特别注意是有序表 33.已知二叉树中叶子数为 50,仅一个孩子的结点数为 30,则总结点数____。度为 2 的结点数 49 34.直接选择排序算法在最好情况下所作的交换元素的次数为____0________。 35.有 n 个顶点的连通图至少有_n-1___条边。 36.在双向链表中,删除指针 P 所指结点的语句序列是_______略_____________________,在 p 之 后插入 s 节点的语句序列是___________________略___________________________________。 37.在有 n 个叶子结点的哈夫曼树中,总结点数是 __略__。 38.在有序表 A[1..18]中,采用二分查找算法查找元素值等于 A[7]的元素,所比较过的元素的下标 依次为____________________。9,4,6,7 39.链表对于数据元素的插入和删除不需移动结点,只需改变相关结点的 ____指针____域的值。 40.在一个链式栈中,若栈顶指针等于 NULL 则为__空______。 41.n (n﹥0) 个顶点的无向图最多有____n(n-1)/2____条边,最少有____0____条边。
西藏自治区考研计算机科学与技术复习要点整理

西藏自治区考研计算机科学与技术复习要点整理一、数据结构与算法1. 线性表线性表的基本概念,顺序表和链表的特点与实现方式,静态链表和循环链表的应用场景,顺序表和链表的插入删除操作的复杂度分析,双向链表和循环双向链表的概念与特点。
2. 栈和队列栈的基本概念,实现方式以及应用场景,栈的顺序存储和链式存储的特点与区别,栈的顺序存储和链式存储的实现方式,栈的插入和删除操作的复杂度分析,栈的应用场景。
队列的基本概念,实现方式以及应用场景,队列的顺序存储和链式存储的特点与区别,队列的顺序存储和链式存储的实现方式,队列的插入和删除操作的复杂度分析,队列的应用场景。
3. 树与二叉树树的基本概念,定义以及应用场景,树的存储结构,树的遍历方式(前序遍历、中序遍历、后序遍历),二叉树的定义,二叉树的性质与实现方式,二叉树的遍历方式(前序遍历、中序遍历、后序遍历、层次遍历),二叉树的线索化表示。
4. 图图的基本概念,表示方式与存储结构,图的遍历算法(深度优先搜索、广度优先搜索),图的最短路径算法(Dijkstra算法、Floyd算法),图的最小生成树算法(Prim算法、Kruskal算法)。
5. 查找与排序顺序查找和二分查找的基本原理,顺序查找和二分查找的实现方式及复杂度分析,顺序查找和二分查找的应用场景。
冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、堆排序的基本原理,实现方式及复杂度分析,各种排序算法的应用场景和特点。
二、计算机网络1. 网络基础知识OSI参考模型和TCP/IP参考模型的结构与特点,各层功能和作用,重点理解物理层、数据链路层、网络层、传输层和应用层的概念、协议及其功能。
2. 网络协议IP协议的特点、作用以及IP地址的分配和分类,子网划分和掩码的计算和应用。
TCP协议和UDP协议的特点、作用以及应用场景,TCP连接的建立与终止过程,TCP拥塞控制的算法。
HTTP协议和DNS协议的特点、作用以及应用场景,HTTP报文的结构与常见请求方法,DNS域名解析的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、设给定问题的规模为变量n,解决该问题的算法所需时间为Tn=O(f(n)),Tn表示式中记号O表示( A )。
A)一个数量级别 B)一个平均值
C)一个最大值 D)一个均方值
2、在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为( B )。
A) rear=rear->next; B) front=front->next;
C) rear=front->next; D) front=rear->next ;
3、n个顶点的强连通图至少有( A )条边。
A)n B)n+1 C)n-1 D)n(n-1)
4、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)40
5、在一个链队列中,假定front和rear分别为队首和队尾指针,则插入一个结点的操作为( B )。
A)front=front->next; B) rear=rear->next;
C) rear=front->next; D) front=rear->next ;
6、下面程序段的时间复杂度是( A )。
s =0;
for( i =0; i<n; i++)
for(j=0;j<n;j++)
s +=B[i][j];
sum = s ;
A) O(n2) B) O(n)
C) O(m*n) D)O(1)
7、链式存储的存储结构所占存储空间( A )。
A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
B)只有一部分,存放结点值
C)只有一部分,存储表示结点间关系的指针
D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
8、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。
这样的排序方法是( A )。
A)直接选择排序 B)直接插入排序
C)快速排序 D)起泡排序
9、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以
C)部分地址必须是连续 D)必须是不连续的
10、在数据结构中,从逻辑上可以把数据结构分为( C )。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构
C)线性结构和非线性结构 D)内部结构和外部结构
11、已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的操作是( D )。
A) Head(Head(Tail(Tail(L))))
B) Tail(Head(Head(Tail(L))))
C) Head(Tail(Head(Tail(L))))
D)Head(Tail(Head(Tail(Tail(L)))))
12、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
13、设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为( A )。
A)p->next=p->next->next; B) p=p->next;
C)p=p->next->next; D) p->next=p;
14、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。
A) (G) B) (D) C) C D) D
15、在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为( C )。
A)top不变 B)top=0 C)top-- D)top++。