线性表_顺序(打印)_习题

合集下载

数据结构习题及答案与实验指导(线性表)2

数据结构习题及答案与实验指导(线性表)2

第2章线性表线性表是一种最基本、最常用的数据结构,它有两种存储结构——顺序表和链表。

本章主要介绍线性表的定义、表示和基本运算的实现。

重点讨论了线性表的存储结构,以及在顺序、链式两种存储结构上基本运算的实现。

重点提示:●线性表的逻辑结构特征●线性表的顺序存储和链式存储两种存储结构的特点●在两种存储结构下基本操作的实现2-1 重点难点指导2-1-1 相关术语1.线性表线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,通常记为:(a1,a2,…,a n),其中n为表长,n=0时称为空表。

要点:一种逻辑结构,其数据元素属于相同数据类型,之间的关系是线性关系。

2.顺序表顺序存储的线性表。

要点:按线性表中的元素的逻辑顺序依次存放在地址连续的存储单元里,其存储特点:用物理上的相邻实现逻辑上的相邻。

3.链表用链表存储的线性表。

要点:链表是通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的,对每个结点的地址是否连续没有要求。

4.单链表每个结点除了数据域外还有一个指向其后继的指针域。

要点:通常将每个元素的值和其直接后继的地址作为一个结点,通过每个结点中指向后继结点的指针表示线性表的逻辑结构。

5.头指针要点:头指针是一个指针变量,里面存放的是链表中首结点的地址,并以此来标识一个链表。

如链表H,链表L等,表示链表中第一个结点的地址存放在指针变量H、L中。

通常用头指针来惟一标识一个链表。

6.头结点要点:附加在第一个元素结点之前的一个结点,头指针指向头结点。

当该链表表示一个非空的线性表时,头结点的指针域指向第一个元素结点;为空表时,该指针域为空。

7.头结点的作用要点:其作用有两个,一是使对空表和非空表的处理得到统一;二是在链表的第一个位置上的操作和在其他位置上的操作一致,无需特殊处理。

2-1-2 线性表的顺序存储1.顺序表顺序存储的线性表称为顺序表。

其特点是:用一组地址连续的存储单元来依次存放线性表的数据元素,因此数据元素的逻辑顺序和物理次序一致(这是顺序存储的核心所在)。

第三章 线性表习题

第三章 线性表习题

第三章 线性表填空题1.线性表的顺序存储结构通过 来直接反映数据元素之间的逻辑关系,而链式存储结构通过 间接反映数据元素之间的逻辑关系。

2.在线性表的顺序存储结构中,逻辑位置相邻的数据元素在 上也相邻,而链式存储结构中,逻辑位置相邻的数据元素在物理位置上 相邻。

3.线性表的链式存储结构主要包括 、 和 三种形式,其中最基本的形式是 。

4.从结构上来看,循环单链表与非循环单链表的不同在于 。

5.一元多项式f(x)=9x13-4x8+3x-5的线性链表表示是 。

6.栈和队列的逻辑结构都是 结构。

7.栈是一种特殊的线性表,其特殊性是 。

8.队列是一种特殊的线性表,其特殊性是 。

9.栈的插入与删除操作都是在 位置进行的;而队列的插入在 进行,删除操作在 进行。

选择题10.中缀形式的算术表达式A+(B-C/D)*E的后缀形式是 。

11.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是 。

A.112B.144C.148D.41212.若频繁地对线性表进行插入和删除操作,该线性表应该采用 存储结构。

A.散列B.顺序C.链式D.索引13.若长度为n的非空线性表采用顺序储存结构,删除表中第i个数据元素是,需要移动表中 个数据元素。

A.n+iB.n-iC.n-i+1D.n-i-114.若长度为n的线性表采用顺序储存结构,在表的第i个位置插入一个数据元素,需要移动表中 个数据元素。

A.n+iB.n-iC.n-i+1D.n-i-115.若长度为n的线性表采用顺序储存结构,在表的第i个位置插入一个数据元素的算法的使劲复杂性是 。

A.O(n)B. O(n2)C. O(nlog2n)D. O(log2n)16.线性链表中各结点的地址 。

A.必须连续B.一定不连续C.部分地址必须连续D.可能连续也可能不连续17.在一个具有n个结点的线性链表中查找一个结点,若查找成功,需要平均比较( )个结点。

2-线性表的定义与基本操作

2-线性表的定义与基本操作

线性表目录C O N T E N T S线性表的定义1线性表: n个同类型数据元素的有限序列,记为:L=(a1,a2,...,a i,...,a n )1 线性表的定义线性表: n个同类型数据元素的有限序列,记为:L=(a1,a2,...,a i,...,a n)L为表名;i为数据元素a i在线性表中的位序;n为线性表的表长; n=0时称为空表;数据元素之间的关系是:a i-1领先于a i,a i领先于a i+1。

称a i-1是a i的直接前驱,a i+1是a i的直接后继,除第一元素a1外,均有唯一的前驱;除最后元素a n外,均有唯一的后继;特点:•a i 的数据类型相同•位序i 从1开始;•前驱与后继1 线性表的定义线性表: n 个同类型数据元素的有限序列,记为:L=(a 1,a 2,...,a i ,...,an )L为表名;i 为数据元素a i 在线性表中的位序;n 为线性表的表长; n=0时称为空表;数据元素之间的关系是:ai-1领先于ai ,a i 领先于a i+1。

称a i-1是a i 的直接前驱,ai+1是a i 的直接后继,除第一元素a 1外,均有唯一的前驱;除最后元素a n 外,均有唯一的后继;•练习题1.判断题:一个教室里面的5排学生,每排坐6个人,这些人的关系是不是线性表?2.电影院售票处排队购票,一共有3个人,如果用ai表示第i个人,则用L=(a1,a2,a3)表示当前排队的人构成的线性表。

请问,a2的直接前驱和直接后继分别是谁?目录C O N T E N T S线性表的抽象数据类型定义} ADT List 3.引用型操作4.加工型操作线性表的抽象数据类型定义} ADT List 3.引用型操作4.加工型操作线性表定义为指针类型SqListPtr ,数据元素类型为ElemType 线性表的基本操作Status List_Init(SqListPtr L);void List_Destory(SqListPtr L);void List_Clear(SqListPtr L);bool List_Empty(SqListPtr L);int List_Size(SqListPtr L);Status List_Retrival(SqListPtr L, int pos, ElemType *elem);Status List_Locate(SqListPtr L, ElemType elem, int *pos);Status List_Insert(SqListPtr L, int pos, ElemType elem);Status List_delete(SqListPtr L, int pos);Status List_Prior(SqListPtr L, int pos, ElemType * elem);Status List_Next(SqListPtr L, int pos, ElemType *elem);enum Status{success,fail,fatal,range_error };线性表的基本操作—初始化与销毁Status List_Init(SqListPtr L);void List_Clear(SqListPtr L);void List_Destory(SqListPtr L);线性表的基本操作—引用型bool List_Empty(SqListPtr L);int List_Size(SqListPtr L);Status List_Retrival(SqListPtr L, int pos, ElemType*elem); Status List_Locate(SqListPtr L, ElemType elem, int*pos); Status List_Prior(SqListPtr L, int pos, ElemType* elem); Status List_Next(SqListPtr L, int pos, ElemType*elem);线性表的基本操作—加工型Status List_Insert(SqListPtr L, int pos, ElemType elem); Status List_delete(SqListPtr L, int pos);线性表的基本操作测试函数序号题目功能描述测试到的基本操作1建立线性表Test_CreateList 初始化空线性表,通过插入操作逐渐建立具有n个元素的线性表List_Init; List_Insert; List_Print2清除线性表Test_ClearList 建立非空线性表;打印线性表确定线性表非空;清空线性表;打印线性表确定线性表的所有数据已经被清除Test_CreateList; List_Print; List_Empty;List_Clear;List_Print3定位线性表并查找前驱后继Test_RetrivalPriorNext 建立线性表;打印线性表;输入要查询的位置并输出该位置的元素;输出该元素的直接前驱与后继Test_CreateList; List_Print; List_Retirval;List_Prior; List_Next4查询Test_Locate 建立线性表;打印线性表;输出某元素在线性表中的位置Test_CreateList; List_Print; List_Locate5求线性表长度Test_Length 建立线性表;打印线性表;求线性表的长度Test_CreateList; List_Print; List_Size线性表的基本操作测试函数序号题目功能描述测试到的基本操作1建立线性表Test_CreateList 初始化空线性表,通过插入操作逐渐建立具有n个元素的线性表List_Init; List_Insert; List_Print2清除线性表Test_ClearList 建立非空线性表;打印线性表确定线性表非空;清空线性表;打印线性表确定线性表的所有数据已经被清除Test_CreateList; List_Print; List_Empty;List_Clear;List_Print3定位线性表并查找前驱后继Test_RetrivalPriorNext 建立线性表;打印线性表;输入要查询的位置并输出该位置的元素;输出该元素的直接前驱与后继Test_CreateList; List_Print; List_Retirval;List_Prior; List_Next4查询Test_Locate 建立线性表;打印线性表;输出某元素在线性表中的位置Test_CreateList; List_Print; List_Locate5求线性表长度Test_Length 建立线性表;打印线性表;求线性表的长度Test_CreateList; List_Print; List_Size因为需要查看线性表中的数据,增加打印线性表的基本操作!讨论•题目:我们要解决问题,总是分析已知条件(输入数据),需要实现的功能(输出),然后寻找输入转换为输出的算法,也就是通过一系列操作步骤对输入数据进行处理,最后转换为输出结果。

线性表的定义

线性表的定义
时间复杂度为:O(n) 问题:在顺序表中,GetElem_Sq时间复杂度?
数 据 结 构
确定单链表中,值为e的元素的位序
HAT
q
^
数 据 结 构
单链表的删除操作算法
Status ListDelete(LinkList L,int i,ET *e) { LinkList p,q; int j=0; p=L; while(p&&j<i-1) { p=p->next; ++j; } if(!(p->next)||(j>i-1)) return FALSE; q=p->next; p->next=q->next; *e=q->data; free(q); return TRUE; }

线 性 表 12
cuit 徐 虹
数 据 结 构
将两个顺序表合并为一个
void Union( SqList *La ,SqList *Lb){ int i; ET e; for(i=1;i<=Lb->Length;i++){ GetElem(Lb,i,&e); if(!LocateElem(La,e)) ListInsert(La,La->Length+1,e); } }

线 性 表 10
cuit 徐 虹
顺序存储结构的删除操作
¾算法
数 据 结 构

线 性 表 11
cuit 徐 虹
Status ListDelete(SqList *L,int i,ET *e) { ET *p,*q; if((i<1)||(i>L->Length)) return ERROR; p=L->elem+i-1; *e=*p; q=L->elem+L->Length-1; for (++p;p<=q;++p) *(p-1)=*p; --L->Length; return OK; } 算法分析:基本操作是什么?时间复杂度是多少?

数据结构:线性表基础习题

数据结构:线性表基础习题

数据结构:线性表基础习题一一月产品名称数量金额利润合计四月产品名称合计数量金额利润总额产品名称可能数量金额利润总额产品名称六月数量金额利润总额二月总额三月金额利润产品名称数量金额利润产品名称数量第二章线性表一.判断题(下列各题,正确的请在前面的括号内打√;错误的打w)(√) (1)线性列表的链式存储结构优于顺序存储结构。

(×)(2)链表的每个结点都恰好包含一个指针域。

(√) (3)在线性表的链式存储结构中,两个逻辑上相邻的元素在物理位置上不一定相邻。

(×)(4)顺序存储的优点是存储密度高,插入和删除效率高。

(×)(5)线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。

(√) (6)序列表的每个节点只能是简单类型,而链表的每个节点可以是复杂类型。

(√) (7)线性表链存储的特点是可以使用一组任意的存储单元来存储表中的数据元素。

(√) (8)线性表是按顺序存储的,必须占用一个连续的存储单元。

(×)(9)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。

(×)(10)插入和删除操作是数据结构中最基本的两种操作,因此它们也经常用于数组中。

二.填空题(1)序列表中逻辑上相邻的元素必须进行物理连接。

(是,必选,否)能等)(2)线性表中的节点集是有限的,节点之间的关系依次连接。

(3)与链表相比,顺序表具有随机搜索和随机访问的优点。

(4)链表比顺序表的优点是便于删除和插入。

(5)采用地址连续存储单元依次存储的存储结构的线性表叫顺序表。

(6)顺序表中访问任意一个结点的时间复杂度均为ov1w。

(7)链表相对于顺序表的优点是插入和删除方便;缺点是存储密度低。

(8)要删除链表中的已知节点*P,其时间复杂度为ov1w。

(9)在单链表中要在已知结点*p之前插入一个新结点,需找到*p的直接前趋结点的地址,其查找的时间复杂度为。

(10)你需要知道在单链表中遍历整个链表。

数据结构考研复习题--第二章--线性表(带答案)

数据结构考研复习题--第二章--线性表(带答案)

第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?()【北方交通大学 2001 一、4(2分)】A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()【北方交通大学 2001 一、14(2分)】A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作。

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。

3.线性表是具有n个()的有限序列(n>0)。

【清华大学 1998 一、4(2分)】A.表元素 B.字符 C.数据元素 D.数据项 E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

【哈尔滨工业大学 2001 二、1(2分)】A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。

【南开大学 2000 一、3】A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表【合肥工业大学 2000 一、1(2分)】7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。

则采用()存储方式最节省运算时间。

【北京理工大学 2000 一、1(2分)】A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表8. 静态链表中指针表示的是(). 【北京理工大学 2001 六、2(2分)】A.内存地址 B.数组下标 C.下一元素地址 D.左、右孩子地址9. 链表不具有的特点是()【福州大学 1998 一、8 (2分)】A.插入、删除不需要移动元素 B.可随机访问任一元素C.不必事先估计存储空间 D.所需空间与线性长度成正比10. 下面的叙述不正确的是()【南京理工大学 1996 一、10(2分)】A.线性表在链式存储时,查找第i个元素的时间同i的值成正比B. 线性表在链式存储时,查找第i个元素的时间同i的值无关C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关11. 线性表的表元存储方式有((1))和链接两种。

顺序表及其运算

顺序表及其运算
if ( ! L->list ) {printf( " Memory allocation failure ! \n" ) ; exit (1) ; }
L->len = 0 ; // 置初始线性表为空 }
2.2 顺序表及其运算
2. 顺序表的插入运算
在表中第 i个位置插入一个元素 item
设表长为 len
即:插入一元素的时间复杂度为:O(n) ② 空间复杂度:原地工作( in place )
思考:在有序顺序表中插入一个数据元素, 算法?
2.2 顺序表及其运算
3. 顺序表的删除运算 在表中删除第pos个元素 删除前:(b0,b1 ,…,bi ,bi+1 ,…,bn-1) 表长为 n ; 删除后:(b0',b1',…,bi-1',bi+1',…,bn-2' ) 表长为 n-1 ; 算法考虑:表空( L->len = 0)不能做删除 ——下溢处理;
保存现场1
a:
保存现场2
b:
保存现场3
c:
end
return
return
return
2.3 栈
为保证中断正确执行,须依次记住每层中断的现场及返回地址;
进入中断→
现场1
现场2 现场1
现场3 现场2 现场1
当各层中断“返回”时,则要按记入的相反次序逐个恢复现场继续 执行;
现场1
现场2 现场1
←中断返回
指定的删除位置不存在,要处理; 正常删除操作,表长 n 减 1; 算法描述:参考教材 算法分析: 与插入运算类似; 平均时间复杂度: O(n); 空间复杂度:原地工作
思考:在有序顺序表中删除指定元素, 算法?

线性表部分习题集

线性表部分习题集

线性表部分复习题一、单项选择题1.线性表中______称为线性表的长度。

A、元素的长度B、数据项的数目C、数据的长度D、元素的个数2.线性表是具有n个______的有限序列(n>0)。

A、表元素B、字符C、数据元素D、数据项3.不属于线性表基本运算的是:______。

A、删除运算B、指针运算C、取结点运算D、插入运算4.在下列关于线性表的叙述中,错误的是:______。

A、采用顺序存储的线性表,必须占用一片连续的存储单元B、采用顺序存储的线性表,便于进行插入和删除操作C、采用链式存储的线性表,不必占用一片连续的存储单元D、采用链式存储的线性表,便于进行插入和删除操作5.链表不具有的特点是______。

A、可随机访问任一元素B、插入和删除时不需要移动元素C、不必事先估计存储空间D、所需空间与线性表的长度成正比6.线性表采用链式存储时,结点的存储地址______。

A、必须是不连续的B、连续与否均可C、必须是连续的D、和头结点的存储地址相连续7.算法指的是______。

A、计算机程序B、解决问题的计算方法C、排序算法D、解决问题的有限运算序列8.算法具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是______。

A、可行性B、有零个或多个输入C、有穷性D、有零个或多个输出9.衡量一个算法的质量除了正确性之外,最重要的是要考查______。

A、可行性B、有穷性C、时间复杂度和空间复杂度D、输入和输出10.线性链表(动态)是通过______方式表示元素之间的关系的。

A、保存后继元素地址B、元素的存储顺序C、保存左、右孩子地址D、保存后继元素的数组下标11.设顺序表的每个元素占8个存储单元。

第1个单元的存储地址是100,则第6个元素占用的最后一个存储单元的地址为______。

A、139B、140C、147D、14812.设顺序表的长度为n,并设从表中删除元素的概率相等。

则在平均情况下,从表中删除一个元素需移动的元素个数是______。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

线性表作业
学号 姓名 分数
一 选择题(14分)
1.下述哪一条是顺序存储结构的优点?( )
A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存
储表示
2.下面关于线性表的叙述中,错误的是哪一个?( )
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个( )的有限序列(n>0)。
A.表元素 B.字符 C.数据元素 D.数据项 E.信息项
4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )
存储方式最节省时间。
A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表
5. 链表不具有的特点是( )
A.插入、删除不需要移动元素 B.可随机访问任一元素
C.不必事先估计存储空间 D.所需空间与线性长度成正比
6. 下面的叙述不正确的是( )
A.线性表在链式存储时,查找第i个元素的时间同i的值成正比
B. 线性表在链式存储时,查找第i个元素的时间同i的值无关
C. 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比
D. 线性表在顺序存储时,查找第i个元素的时间同i的值无关
7. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为
( )(1<=i<=n+1)。
A. O(0) B. O(1) C. O(n) D. O(n2)
8. 对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。
A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)
9.线性表( a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为( )
A.O(i) B.O(1) C.O(n) D.O(i-1)
10.非空的循环单链表head的尾结点p满足( )。
A.p->next=head B.p->next =NULL C.p=NULL D.p= head
11.循环链表H的尾结点P的特点是( )。
A.P->NEXT=H B.P->NEXT= H->NEXT C.P=H D.P=H->NEXT
12.在一个以 h 为头的单循环链中,p 指针指向链尾的条件是()
A. p->next=h B. p->next=NULL C. p->next. ->next=h D. p->data=-1
13.在单链表指针为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;
14.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( )
A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL
二、判断(10分)
1. 链表中的头结点仅起到标识的作用。( )
2. 顺序存储结构的主要缺点是不利于插入或删除操作。( )
3.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( )
4. 对任何数据结构链式存储结构一定优于顺序存储结构。( )
5. 线性表的特点是每个元素都有一个前驱和一个后继。( )
6. 取线性表的第i个元素的时间同i的大小有关. ( )
7. 线性表只能用顺序存储结构实现。( )
8. 线性表就是顺序存储的表。( )
9. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )
10. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
( )

三、填空(25分)
1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元
素时,应采用_______存储结构。
2.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要
移动元素的个数是________。
3.设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指
针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句:_______; ______;
4.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动________个元素。
5.在单链表中设置头结点的作用是________。
6.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为________,在给定
值为x的结点后插入一个新结点的时间复杂度为________。
7.根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成________和_______;而又
根据指针的连接方式,链表又可分成________和________。
8.链接存储的特点是利用________来表示数据元素之间的逻辑关系。
9.顺序存储结构是通过________表示元素之间的关系的;链式存储结构是通过________表示元素之间的关
系的。
10. 对于单链表链表,在两个结点之间插入一个新结点需修改的指针共 ______个。
11. 循环单链表的最大优点是:________。
12. 已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:________
13. 在单链表L中,指针p所指结点有后继结点的条件是:__
14. 在单链表p结点之后插入s结点的操作是:_______。
15.线性结构包括______、______、_______和_______。线性表的存储结构分成______和______

四/程序填空(10分)
.对单链表中元素按插入方法排序的C语言描述算法如下,其中L为链表头结点指针。请填充算法中标出
的空白处,完成其功能。
typedef struct node
{int data; struct node *next;
}linknode,*link;
void Insertsort(link L)
{ link p,q,r,u;
p=L->next; (1)______;
while((2)________)
{ r=L; q=L->next;
while((3)________&& q->data<=p->data) {r=q; q=q->next;}
u=p->next; (4)______; (5)______; p=u;
}
}

五 应用题(51分)
1.线性表有两种存储结构:一是顺序表,二是链表。试问:
(1)如果有 n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自
动地改变。在此情况下,应选用哪种存储结构? 为什么?
(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,
那么应采用哪种存储结构?为什么?
2.线性表的顺序存储结构具有三个弱点:其一,在作插入或删除操作时,需移动大量元素;其二,由于
难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。线
性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。

3.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?为什么?
5.线性表(a1,a2,…,an)用顺序映射表示时,ai和ai+1(1<=i6. 说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;头结点与首元结点的关系。

7. 试述头结点,首元结点,头指针这三个概念的区别.
10. 如何通过改链的方法,把一个单向链表变成一个与原来链接方向相反的单向链表?

11. 设单链表结点指针域为next,试写出删除链表中指针p所指结点的直接后继的C语言语句。
12. 设单链表中某指针p所指结点(即p结点)的数据域为data,链指针域为next,请写出在p结点之
前插入s结点的操作

相关文档
最新文档