数据结构精品课程习题 联系客服

发布时间 : 星期六 文章数据结构精品课程习题更新完毕开始阅读5e67fcc48bd63186bcebbca1

(2)删除P结点的直接前驱结点的语句序列是 ; (3)删除P结点的语句序列是 ; (4)删除首结点的语句序列是 ; (5)删除尾结点的语句序列是 。 9、已知指针P指向双向链表中的一个结点(非首结点、非尾结点),则: (1)将结点S插入在P结点的直接后继位置的语句是 ; (2)将结点S插入在P结点的直接前驱位置的语句是 ; (3)删除P结点的直接后继结点的语句序列是 ; (4)删除P结点的直接前驱结点的语句序列是 ; (5)删除P结点的语句的序列是 。 10、线性表的存储结构有顺序存储和 存储两种。 11、线性表的元素长度为4,在顺序存储结构下LOC(ai)=2000,则LOC(ai+1)= 。

12、线性表a的元素长度为L,在顺序存储结构下LOC(ai)=LOC(ai)+ 。

13、线性表的存储结构有 两种存储方式。 14、线性表的元素长度为4,LOC(a1)=1000,则LOC(a3)= , 15、设某非空单链表,其结点形式为 ,若要删除指针q所指结点

data next 的直接后继结点,则需执行下列语句序列: p=q-﹥next; ;free(p);

16、存储空间长度为M的循环队列sq是满队列的条件是 。

17、表示逻辑关系的存储结构可以有四种方式,即顺序存储方式、链式存储方式、 和散列存储方式。

18、定义在线性表上的初始化、查找、插入和删除运算中, 是引用型运算。

19、线性表(a0,a1,a2,?,an)(n≥1)中,每个元素占c个存储单元,m为a0的首地址,则按顺序存储方式存储线性表,an的存储地址是 。 20、设某非空双链表,其结点形式为

prior data next 9

若要删除指针q所指向的结点,则需执行下述语段: q-﹥prior-﹥next=q-﹥next; 。 21、函数LENGTLL(‘abc’)的值是 。 22、同一个线性表内各元素的长度 。 23、线性表的 元素没前导元素。 24、单链表S是空表的条件是 。 25、循环链表S是空表的条件是 。 26、双向链表S是空表的条件是 。 27、P指针指向单链表的尾元素的条件是 。 28、P指针指向循环链表S的尾元素的条件是 。 29、P指针指向双向链表的尾元素的条件是 。 30、若双向链表S中, s-﹥next==s-﹥prior则S 。 三、应用题

1、已知线性表L,根据各步运算填写表格。 运 算 运算后L表中的内容 INITATE(L) L=( ) INSERT(L,a,1) L=( ) INSERT(L,b,1) L=( ) INSERT(L,X,2) L=( ) GET(L,2) L=( ) LOCATE(L,X) L=( ) DELETE(L,1) L=( ) DELETE(L,1) L=( ) LENGTLL(L) L=( ) 函 数 值 ? ? ? L表中元素个数 ? ? ? ? ? ? ? ? ? 2、叙述链表的以下三个概念的区别:头指针、头结点、首结点。 3、在什么情况下使用顺序表比链表好?

4、对于以下单链表,分别执行下列各步骤的程序段,画出执行各步后链表指针变化的示意图。 L

(1)P= -﹥next;Q=P-﹥next;R=Q-﹥next;S=R-﹥next; (2)R-﹥data=P-﹥data;P-﹥data=p-﹥next-﹥data; (3)T=P;WHILE(T){T-﹥data=T-﹥data*2;T-﹥next};

10

2 5 7 8 ?

5、已知带表头的单链表L,简述下列对L链表操作算法的功能。 Status a(L) {

if (L {L-﹥next&&L-﹥next-﹥next} {

Q=L-﹥nwxt; L-﹥next=Q-﹥next; P=Q

While(P-﹥next)p=p-﹥next; P-﹥next=Q Q-﹥next=NULL; } return OK }

6、已知带表头的循环链表L,简述下列对L链表操作算法的功能。 void BB(s,q)/* s、q是指向结点类型的指针*/{ P=s;

While(P-﹥next!)=q P=P-﹥next; P-﹥next=s; }

Void AA(pa,pb)/*pa、pb是指向单向循环表中的两个结点的指针*/{BB(pa,pb); BB(pb,pa) }

7、分别画出线性表L=(a,b,c)存储在单链表、循环链表、双向循环链表中的示意图。

8、哪些链表从尾指针出发可以访问到链表中的任意结点? 四、设计题

1、用类C语言写出在顺序存储条件下,初始化线性表L的算法:Initiate(L) 2、用类C语言写出在顺序存储条件下,求线性表L的长度的算法:

11

Length(L)

3、用类C语言写出在顺序存储条件下,读线性表L的第i个元素的算法: GET(L,i)

4、设某带头结点的单链表的结点结构说明如下: typedef struct nodel { int data;

struct nodel *next; }node;

试设计一个算法:void copy (node *headl,node *head2),将以headl为头指针的单链表中。

5、没有两个按升序排列的单链表X和Y,其实指针分别为p,q,结点结构说明如下:

typedef struct nodel { intadta;

struct nodel * next }node;

试设计一个算法void concat(node *p, *q)将它们合并成一个以 P为头指针的链表Z,使其仍然有序。

6、用类C语言写出在顺序存储条件下,将线性表L中的第i个元素删除的算法: DELETE(L,i)

7、用类C语言写出在顺序存储条件下,将X插入顺序表La的算法,La表中的元素是递增有序,有序表存储在a数组中: insert0rderlist(&a , X)

8、用类C语言写出在链式存储条件下,将单链表L1的元素连接在单链表L2的尾部的算法: Link(L1,L2)

9、用类C语言写出在链式存储条件下,删除单链表L中值大于max或min的元

12