《数据结构》题库章节练习题.docx
《《数据结构》题库章节练习题.docx》由会员分享,可在线阅读,更多相关《《数据结构》题库章节练习题.docx(62页珍藏版)》请在咨信网上搜索。
《数据结构》题库章节练习题 - 第1章 绪论 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 一、选择题 1、算法的时间复杂度取决于( ) A.问题的规模 B. 待处理数据的初态 C. A和B 2、计算机算法指的是(1),它必须具备(2) 这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 3、一个算法应该是( )。 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 4、以下的算法时间复杂度中,算法速度最快的是( )。 A. O(N) B. O(Nlog2N) C. O(N2) D. O(2N) 5、下面说法错误的是( ) (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 6、从逻辑上可以把数据结构分为( )两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 7、下面程序的时间复杂度为( ) for(i=0;i<m;i++) for(j=0;j<n;j++) A[i][j]=i*j; (A) O(M2) (B) O(N2) (C) O(M*N) (D) O(M+N) 8、如下程序算法的时间复杂度是( )。 void link (int arr[N]) { int i, j, k; for (i=0; i<N-1; i++) for (j=i+1; j<N; j++) if (arr[i] > arr[j]) { k = arr[i]; arr[i] = arr[j]; arr[j] = k;} } A. O(N) B. O(N2) C. O(log2N) D. O(2N) 9、以下数据结构中,( )是非线性数据结构。 A.树 B.字符串 C.队 D.栈 10、连续存储设计时,存储单元的地址( )。 A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续 二、填空题 1、数据的物理结构包括数据元素的表示和数据元素间关系的表示。 2、根据数据元素之间的逻辑关系,一般可以构造出四种逻辑结构分别是:集合、线性结构、树形结构、图状或网状结构。 3、数据的逻辑结构是指数据的组织形式,即数据元素之间逻辑关系的总体。而逻辑关系是指数据元素之间的关联方式或称“邻接关系”。 4、一个数据结构在计算机中表示(又称映像) 称为 存储结构 。 5、如果一个算法的时间复杂度是(N3+4N2log2N+3N)/N,那么用数量级表示的时间复杂度应该是O( N2 )。 6、抽象数据类型的定义仅取决于它的一组逻辑特性_, 而与在计算机内部如何表示和实现 无关 ,即不论其内部结构如何变化,只要它的 数学特性 不变,都不影响其外部使用。 7、数据结构中评价算法的两个重要指标是 算法的时间复杂度和空间复杂度 。 8、算法设计应考虑4种质量要求: 正确性 、 可读性 、健壮性、高效率与低存储量要求。 9、数据结构是研讨数据的逻辑结构和物理结构_,以及它们之间的相互关系,并对与这种结构定义相应的操作(运算),设计出相应的算法_。 10、一个算法具有5个重要特性:有穷性 、确定性、 可行性、输入、输出。 11、请分析如下程序代码的时间复杂度,填写其中的空格: void deleteAll (int array[], int N, int target) { int i=0; while (i<N) { if (array[i] != target) i++; else { int j; for (j=i+1; j<N; j++) { array[j-1] = array[j];} N--; } } } 函数deleteAll之中,作为关键操作的一个语句是:_ array[j-1] = array[j]__ 函数deleteAll的算法时间复杂度是:___ O(N2)___ 12、计算机执行下面的语句时,语句s的执行次数为 __ (n+3)(n-2)/2 _____ 。 for(i=l;i<n-l;i++ ) for(j=n; j>=i; j-- ) s; 13、下面程序段的时间复杂度为___ O(n)_____。(n>1) sum=1; for (i=0; sum<n; i++) sum+=1; 14、在有n个选手参加的单循环赛中,总共将进行__ n(n-1)/2__场比赛。 15、将数据结构可定义为一个二元组(D,R),其中D表示的是数据元素的有限集合,则S表示的是D上数据元素之间关系的有限集合 。 16、抽象数据类型的定义包括 数据对象的定义、 数据关系的定义和 基本操作 的定义。 17、 数据对象 是性质相同的数据元素的 集合 。数据元素是数据的基本单位,有时一个数据元素可由若干个 数据项 组成, 数据项 是数据的不可分割的最小单位。 三、简答题 1、数据结构是一门研究什么内容的学科? 数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。 2、顺序存储方式和链式存储方式各有什么特点? (1)顺序存储方式。数据元素顺序存放,每个存储结点只含一个元素。存储位置反映数据元素间的逻辑关系。存储密度大,但有些操作(如插入、删除)效率较差。 (2)链式存储方式。每个存储结点除包含数据元素信息外还包含一组(至少一个)指针。指针反映数据元素间的逻辑关系。这种方式不要求存储空间连续,便于动态操作(如插入、删除等),但存储空间开销大(用于指针),另外不能折半查找等。 3、数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么? 数据类型是程序设计语言中的一个概念,它是一个值的集合和操作的集合。如C语言中的整型、实型、字符型等。整型值的范围(对具体机器都应有整数范围),其操作有加、减、乘、除、求余等。实际上数据类型是厂家提供给用户的已实现了的数据结构。 “抽象数据类型(ADT)”指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义包括:数据对象的定义、 数据关系的定义和 基本操作 的定义。“抽象”的意义在于数据类型的数学抽象特性。抽象数据类型的定义仅取决于它的逻辑特性,而与其在计算机内部如何表示和实现无关。无论其内部结构如何变化,只要它的数学特性不变就不影响它的外部使用。 抽象数据类型和数据类型实质上是一个概念。此外,抽象数据类型的范围更广,它已不再局限于机器已定义和实现的数据类型,还包括用户在设计软件系统时自行定义的数据类型。 使用抽象数据类型定义的软件模块含定义、表示和实现三部分,封装在一起,对用户透明(提供接口),而不必了解实现细节。抽象数据类型的出现使程序设计不再是“艺术”,而是向“科学”迈进了一步。 4、在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系? 数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。 数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则是依赖于存储结构。 5、若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。 逻辑结构相同但存储不同,可以是不同的数据结构。例如,线性表的逻辑结构属于线性结构,采用顺序存储结构为顺序表,而采用链式存储结构称为线性链表。 6、在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。 栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。 7、评价各种不同数据结构的标准是什么? 数据结构的评价非常复杂,可以考虑两个方面,一是所选数据结构是否准确、完整的刻划了问题的基本特征;二是是否容易实现(如对数据分解是否恰当;逻辑结构的选择是否适合于运算的功能,是否有利于运算的实现;基本运算的选择是否恰当。) 8、评价一个好的算法,您是从哪几方面来考虑的? 评价好的算法有四个方面。一是算法的正确性;二是算法的可读性;三是算法的健壮性;四是算法的时空效率(高效率与低存储量需求)。 9、解释:算法、算法的时间复杂度、频度 (1)算法是对特定问题求解步骤的描述,是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有五个重要特性:有穷性、确定性、可行性、输入和输出。 (2)算法的时间复杂度是算法输入规模的函数。算法的输入规模或问题的规模是作为该算法输入的数据所含数据元素的数目,或与此数目有关的其它参数。有时考虑算法在最坏情况下的时间复杂度或平均时间复杂度。 (3)在分析算法时间复杂度时,有时需要估算基本操作的原操作,它是执行次数最多的一个操作,该操作重复执行的次数称为频度。 10、当你为解决某一问题而选择数据结构时,应从哪些方面考虑? 通常考虑算法所需要的存储空间量和算法所需要的时间量。后者又涉及到四方面:程序运行时所需输入的数据总量,对源程序进行编译所需时间,计算机执行每条指令所需时间和程序中指令重复执行的次数。 11、数据结构与数据类型有什么区别? “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面:(1)数据的逻辑结构,(2)数据的存储结构,(3)对数据进行的操作(运算)。而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。 12、在编制管理通讯录的程序时, 什么样的数据结构合适? 为什么? 应从两方面进行讨论:如通讯录较少变动(如城市私人电话号码),主要用于查询,以顺序存储较方便,既能顺序查找也可随机查找;若通讯录经常有增删操作,用链式存储结构较为合适,将每个人的情况作为一个元素(即一个结点存放一个人),设姓名作关键字,链表安排成有序表,这样可提高查询速度。 13、算法的时间复杂度、算法的空间复杂度如何计算和表示? 答案: (略)(请大家认真看和分析教材P14-P17的内容!) 四、算法分析题 调用下列C函数f(n)回答下列问题 : (1)试指出f(n)值的大小,并写出f(n) 值的推导过程; (2)假定n= 5,试指出f(5)值的大小和执行f(5)时的输出结果 。 C函数: int f(int n) { int i, j,k, sum= 0; for(i=l; i<n+1;i++) {for(j=n; j>i-1; j--) for(k=1; k<j+1; k++ ) sum++; printf("sum=%d\n", sum); } return (sum); } 参考答案: 第一层for循环判断n+1次,往下执行n次, 第二层for执行次数为(n+(n-1)+(n-2)+„+1), 第三层循环体受第一层循环和第二层循环的控制,其执行次数如下表: 执行次数为(1+2+。。。+n)+(2+3+。。。+n)+ 。。。+n=n*n(n+1)/2-n(n2-1)/6。 在n=5时,f(5)=55,执行过程中,输出结果为: sum=15 sum=29 sum=41 sum=50 sum=55 《数据结构》期末复习题及参考答案 - 第2章 线性表 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 一、选择题 1、下面关于线性表的叙述中,错误的是哪一个?( ) A.线性表采用顺序存储,必须占用一片连续的存储单元。 B.线性表采用顺序存储,便于进行插入和删除操作。 C.线性表采用链接存储,不必占用一片连续的存储单元。 D.线性表采用链接存储,便于插入和删除操作。 2、线性表是具有n个( )的有限序列(n>0)。 A.表元素 B.字符 C.数据元素 D.数据项 E.信息项 3、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。 A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表 4、设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。 A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表 5、长度为N的线性表,如果是顺序存储,则访问、删除某个结点的时间复杂度分别是( )和( )。 A. O(N) , O(1) B. O(N) , O(1) C. O(1) , O(1) D. O(1) , O(N) 6、链表不具有的特点是( ) A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比 7、长度为N的线性表,如果是链式存储,则访问、删除某个结点的时间复杂度分别是( )和( )。 A. O(1) , O(N) B. O(N) , O(1) C. O(N) , O(1) D. O(N) , O(1) 8、若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( )(1<=i<=n+1)。 A. O(0) B. O(1) C. O(n) D. O(n2) 9、对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。 A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1) 10、线性表( a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为( ) A.O(i) B.O(1) C.O(n) D.O(i-1) 11、在双向链表指针p的结点前插入一个指针q的结点操作是( )。 A. p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q; B. p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink; C. q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q; D. q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q; 12、在单链表指针为p的结点之后插入指针为s的结点,正确的操作是:( )。 A.p->next=s;s->next=p->next; B. s->next=p->next;p->next=s; C.p->next=s;p->next=s->next; D. p->next=s->next;p->next=s; 13、对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( ) A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL 14、设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )。 (A) q=p->next;p->data=q->data;p->next=q->next;free(q); (B) q=p->next;q->data=p->data;p->next=q->next;free(q); (C) q=p->next;p->next=q->next;free(q); (D) q=p->next;p->data=q->data;free(q); 二、填空题 1、对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为 O(n) ,在表尾插入元素的时间复杂度为 O(1) 。 2、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用___顺序 ____存储结构。 在长度为N的线性表中插入一个结点,对于顺序存储和链式存储的线性表,其插入操作的时间复杂度分别是O( N )和O( 1 )。 3、线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是_____(n-1)/2 ___。 在已有n个结点顺序存储的线性表中,插入一个新结点平均需要移动数据 n/2 次。 4、设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句: py->next=px->next; px->next=py; 5、在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动___ n-i+1___个元素。 6、对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为___ O(1)_____,在给定值为x的结点后插入一个新结点的时间复杂度为____ O(n)____。 7、根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成___单链表_____和___多重链表____;而又根据指针的连接方式,链表又可分成__(动态)链表______和___静态链表_____。 8、顺序存储结构是通过___物理上相邻 _____表示元素之间的关系的;链式存储结构是通过____ 指针____表示元素之间的关系的。 9、一个顺序存储的线性表,第1、第2个元素的存储地址分别是16进制的16A、17A,那么第10个元素的存储地址是16进制的 1FA 。 10、 对于双向链表,在两个结点之间插入一个新结点需修改的指针共 ___4 ___个,单链表为____ 2___个。 11、循环单链表的最大优点是:___从任一结点出发都可访问到链表中每一个元素。_____。 12、在单链表L中,指针p所指结点有后继结点的条件是:__ p->next!=NULL 13、线性表的存储结构分为__顺序存储结构____和__链式存储结构____。 14、采用链式存储结构,它根据实际需要申请内存空间,而当不需要时又可将不用结点空间返还给系统。在链式存储结构中插入和删除操作 不需要 移动元素。 15、设单链表结点指针域为next,则删除链表中指针p所指结点的直接后继的的操作是: q=p->next; p->next=q->next; free(q); 16、设单链表的头结点的头指针为head,且pre=head,单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,则在p结点之前插入s结点的操作是: while(pre->next!=p) pre=pre->next; s->next=p; pre->next=s; 17、在单链表p结点之后插入s结点的操作是: s->next=p->next; p->next=s; 三、简答题 1、已知顺序表La 和Lb中数据元素按值非递减有序排列,归并La 和 Lb得到新的顺序表Lc,使Lc中的数据元素也按值非递减有序排列-这种操作称为顺序表的归并操作。请阅读下列顺序表的归并操作算法代码,分析该算法的时间复杂度,并作简要解释。 void MergeList(SqList La, SqList Lb, SqList &Lc) { pa = La.elem ; pb = Lb.elem ; Lc.listsize = Lc.length = La.length +Lb.length; pc= Lc.elem = (ElemType*) malloc( Lc.listsize*sizeof ( ElemType )); if (! Lc.elem)exit(OVERFLOW); //存储分配失败 pa_last = La.elem + La.length-1 ; pb_last = Lb.elem + Lb.length-1 ; while ( pa<= pa_last && pb<= pb_last ) { if ( *pa<= *pb ) *pc++ = *pa++; else *pc++ = *pb++; } while ( pa<= pa_last ) *pc++ = *pa++; //将La的剩余元素插入 while ( pb<= pb_last ) *pc++ = *pb++;//将Lb的剩余元素插入 } 参考答案: 上述算法将归并后的数据元素存放在新的顺序表Lc中,顺序表La 和Lb不用变化,只是把顺序表La 和Lb中的数据元素一个个新插入到顺序表Lc的末尾,最多有La.length +Lb.length个数据元素要插入到顺序表Lc中,所以该算法的时间复杂度是O(La.length+Lb.length)。 2、已知顺序表La 和Lb,现在将存在于顺序表Lb中而不存在于顺序表La中的数据元素插入到顺序表La中去(如果发现顺序表La的空间不够,则需要扩大顺序表La)。具体做法是从顺序表Lb中依次取得每个数据元素,并依值在顺序表La中进行查访,若不存在,则插入之-这种操作称为顺序表的合并操作。请阅读下列顺序表的合并操作算法代码,分析该算法的时间复杂度,并作简要解释。 void union(List &La, List Lb) { ElemType e; int La_len, Lb_len, i; La_len = ListLength(La); //求顺序表的长度 Lb_len = ListLength(Lb); for (i = 1; i <= Lb_len; i++) { GetElem(Lb, i, e); //依次取Lb中第i个数据元素赋给e if (!LocateElem(La, e, equal ) //依值e在顺序表La中进行查访 ListInsert(La, ++La_len, e);//La中不存在和 e 相同的数据元素,则在La的最后面插入 } } 参考答案: 在顺序表La中查访是否存在和Lb中第i个数据元素(值为e)相同的数据元素的方法是: 令e和La中的数据元素逐个比较。若La中存在和e相同的数据元素ai,则比较次数为 i(1≤i≤La.length), 否则为La.length,即算法LocateElem的时间复杂度为O(La.length)。而最多有Lb.length个数据元素要插入到顺序表La中,由此,算法union的时间复杂度为: O(La.length×Lb.length) 。 3、线性表的顺序存储结构具有三个弱点:其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。 参考答案: 链式存储结构一般说克服了顺序存储结构的三个弱点。首先,插入、删除不需移动元素,只修改指针,时间复杂度为O(1);其次,不需要预先分配空间,可根据需要动态申请空间;其三,表容量只受可用内存空间的限制。其缺点是因为指针增加了空间开销,当空间不允许时,就不能克服顺序存储的缺点。 4、对于单向链表、单向循环链表、双向链表、双向循环链表,在链表中或者链表的尾部插入或删除元素的操作各有什么特点,相应算法的时间复杂度各是怎样的情况? 参考答案: (略)(请大家认真看和分析教材的相关内容!) 5、静态链表是一种链式存储的线性表。静态单链表是用一维数组来存储线性链表的结点数据,并且用一维数组的下标表示指针。已知一个静态单链表SLinkList定义如下: #define MAXSIZE 200 //静态链表的最大长度 typedef struct { DataType data; //数据域 int next; //指针域 } NodeType; //静态单链表的结点类型 NodeType SLinkList [MAXSIZE]; //静态单链表SLinkList,头结点是SLinkList [0] 上述静态单链表的结点中的指针域next保存的是静态单链表SLinkList的下标值。请写出插入结点、删除结点的算法所对应的函数的定义。 参考答案: (略)(请大家认真看和分析教材P31-P34相关内容,并写出相应的函数以实现静态单链表的插入、删除结点的操作!) 注意,教材中,SLinkList是被定义为一个一维数组类型,本题SLinkList则是一维数组名。 四、算法分析题 1、下面程序段的功能是利用从尾部插入的方法建立单链表的算法,请在下划线处填上正确的内容。 typedef struct node { int data; struct node *next; } linklist; void linklistcreate(___linklist _ * &head ) { for (i=1;i<=n;i++) { p=(linklist *)malloc(sizeof(linklist)); scanf(“%d”,&(p->data)); p->next= NULL; if(i==1) head=q=p; else { q->next=p;____ _ q=p _____;} } } 2、下面的结构体定义了双向链表的节点结构。请分析如下程序代码,填写其中缺少的语句代码: typedef struct node { int data; struct node *last; struct node *next; } Node; void deleteOne (Node *head, int target) { Node *p = headànext; while (p != NULL) { if (pàdata != target) ____ p = pànext _____; else { if (pànext != NULL) pànextàlast = ____ pàlast _____; pàlastànext __ = pànext; free(p); } } } 3、说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;头结点与首结点的关系。 参考答案: 在线性表的链式存储结构中,头指针指链表的指针,若链表有头结点则是链表的头结点的指针,头指针具有标识作用,故常用头指针冠以链表的名字。头结点是为了使插入和删除等操作的统一、方便而设立的,放在第一元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等),有头结点后,对在第一元素结点前插入结点和删除第一结点,其操作与对其它结点的操作统一了。首结点也就是第一元素结点,它是头结点后边的第一个结点。 五、算法描述题 设有一带头结点的单链表,编程将链表颠倒过来。要求不用另外的数组或结点完成。 参考答案: 要实现带头结点的单链表的逆置,通常作法是:将工作指针指向第一个元素结点,将头结点的指针域置空。然后将链表各结点从第一结点开始直至最后一个结点,依次前插至头结点后,使最后插入的结点成为链表的第一结点,第一个插入的结点成为链表的最后结点。 typedef struct node {int data;∥假定结点数据域为整型。 struct node *next; }node,*LinkedList; LinkedList creat( ) {LinkedList head,p int x; head=(LinkedList)malloc(sizeof(node)); head->next=null; /*设置头结点*/ scanf(“%d”,&x); while(x!=9999) /*约定输入9999时退出本函数*/ {p=(LinkedList)malloc(sizeof(node)); p->data=x; p->next=head->next;/* 将新结点链入链表*/ head->next=p; scanf(“%d”,&x); } return(head); }∥结束creat函数。 LinkedList invert1(LinkedList head) /*逆置单链表*/ { LinkedList p=head->next; /*p为工作指针*/ head->next=null; while(p!=null) { r=p->next; /*暂存p的后继*/ p->next=head->next; head->next=p; p=r; } return(head); }/*结束invert1函数*/ void main() { LinkedList la; la=creat( ); /*生成单链表*/ la=invert1(la);/*逆置单链表*/ } 《数据结构》期末复习题及参考答案 - 第3章 栈和队列 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 一、选择题 1、对于栈,操作数据的原则是( )。 A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序 2、要求数据遵循FIFO(先进先出)原则的数据结构是( )。 A. 线性表 B. 链表 C. 队列 D. 栈 3、若进栈的序列为1,2,3,4,则以下哪一个不可能是一个出栈序列。 A.3,2,4,1 B.3,2,1,4 C.4,2,3,1 D.1,3,2,4 4、有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( ) A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 5、设栈的输入序列是1,2,3,4, 则( )不可能是其出栈序列。 A. 1,2,4,3, B. 2,1,3,4, C. 1,4,3,2, D. 4,3,1,2, 6、在一个链队列中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为( ) (A) f->next=c;f=s (B) r->next=s;r=s (C) s->next=r;r=s (D) s->next=f;f- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 题库 章节 练习题
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文