当前位置:文档之家› 数据结构线性表答案

数据结构线性表答案

第一章线性表描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

解:头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

填空题。

解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。

(2) 顺序表中逻辑上相邻的元素的物理位置必定紧邻。

单链表中逻辑上相邻的元素的物理位置不一定紧邻。

(3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。

(4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。

在什么情况下用顺序表比链表好解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。

对以下单链表分别执行下列各程序段,并画出结果示意图。

解:画出执行下列各行语句后各指针及链表的示意图。

L=(LinkList)malloc(sizeof(LNode)); P=L;for(i=1;i<=4;i++){P->next=(LinkList)malloc(sizeof(LNode));P=P->next; P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--) Ins_LinkList(L,i+1,i*2);for(i=1;i<=3;i++) Del_LinkList(L,i);解:已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是__________________。

b. 在P结点前插入S结点的语句序列是__________________。

c. 在表首插入S结点的语句序列是__________________。

d. 在表尾插入S结点的语句序列是__________________。

(1) P->next=S;(2) P->next=P->next->next;(3) P->next=S->next;(4) S->next=P->next;(5) S->next=L;(6) S->next=NULL;(7) Q=P;(8) while(P->next!=Q) P=P->next;(9) while(P->next!=NULL) P=P->next;(10) P=Q;(11) P=L;(12) L=S;(13) L=P;解:a. (4) (1)b. (7) (11) (8) (4) (1)c. (5) (12)d. (9) (1) (6)已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

a. 删除P结点的直接后继结点的语句序列是____________________。

b. 删除P结点的直接前驱结点的语句序列是____________________。

c. 删除P结点的语句序列是____________________。

d. 删除首元结点的语句序列是____________________。

e. 删除尾元结点的语句序列是____________________。

(1) P=P->next;(2) P->next=P;(3) P->next=P->next->next;(4) P=P->next->next;(5) while(P!=NULL) P=P->next;(6) while(Q->next!=NULL) { P=Q; Q=Q->next; }(7) while(P->next!=Q) P=P->next;(8) while(P->next->next!=Q) P=P->next;(9) while(P->next->next!=NULL) P=P->next;(10) Q=P;(11) Q=P->next;(12) P=L;(13) L=L->next;(14) free(Q);解:a. (11) (3) (14)b. (10) (12) (8) (3) (14)c. (10) (12) (7) (3) (14)d. (12) (11) (3) (14)e. (9) (11) (3) (14)已知P结点是某双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是_______________________。

b. 在P结点前插入S结点的语句序列是_______________________。

c. 删除P结点的直接后继结点的语句序列是_______________________。

d. 删除P结点的直接前驱结点的语句序列是_______________________。

e. 删除P结点的语句序列是_______________________。

(1) P->next=P->next->next; (2) P->priou=P->priou->priou; (3) P->next=S; (4) P->priou=S; (5) S->next=P; (6) S->priou=P; (7) S->next=P->next; (8) S->priou=P->priou; (9) P->priou->next=P->next; (10) P->priou->next=P; (11) P->next->priou=P; (12) P->next->priou=S; (13) P->priou->next=S; (14) P->next->priou=P->priou; (15) Q=P->next; (16) Q=P->priou; (17) free(P); (18) free(Q); 解:a. (7) (3) (6) (12) b. (8) (4) (5) (13) c. (15) (1) (11) (18) d. (16) (2) (10) (18) e. (14) (9) (17) 简述以下算法的功能。

(1) StatusA(LinkedListL){()m a a A ,,1Λ=()n b b B ,,1Λ=A 'B 'A B ='='B A B A =A '≠'B A 'B 'BA <B A >A B()n a a ,,1Λ()1,,a a n Λ()m a a a A ,,,21Λ=()n b b b B ,,,21Λ=()n m m m b b b a b a C ,,,,,,,111ΛΛ+=n m ≤()m n n n a a b a b a C ,,,,,,,111ΛΛ+=n m >()n a a a L ,,,21Λ=()2431,,,,,,a a a a a L n ΛΛ=.,an)改造为(a1,a3,...,an,...,a2)Status ListChange_DuL(DuLinkList &L) { int i;DuLinkList p,q,r; p=L->next; r=L->pre; i=1; while(p!=r){ if(i%2==0){ q=p; p=p->next;// 删除结点q->pre->next=q->next;q->next->pre=q->pre;// 插入到头结点的左面q->pre=r->next->pre;r->next->pre=q;q->next=r->next;r->next=q;}else p=p->next;i++;}return OK;}设有一个双向循环链表,每个结点中除有pre,data和next三个域外,还增设了一个访问频度域freq。

在链表被起用之前,频度域freq的值均初始化为零,而每当对链表进行一次Locate(L,x)的操作后,被访问的结点(即元素值等于x的结点)中的频度域freq的值便增1,同时调整链表中结点之间的次序,使其按访问频度非递增的次序顺序排列,以便始终保持被频繁访问的结点总是靠近表头结点。

试编写符合上述要求的Locate操作的算法。

解:DuLinkList ListLocate_DuL(DuLinkList &L,ElemType e){DuLinkList p,q;p=L->next;while(p!=L && p->data!=e) p=p->next;if(p==L) return NULL;else{p->freq++;// 删除结点p->pre->next=p->next;p->next->pre=p->pre;// 插入到合适的位置q=L->next;while(q!=L && q->freq>p->freq) q=q->next;if(q==L){p->next=q->next;q->next=p;p->pre=q->pre;q->pre=p;}else{// 在q之前插入p->next=q->pre->next;q->pre->next=p;p->pre=q->pre; q->pre=p; } return p; } }在至题中,稀疏多项式采用的顺序存储结构SqPoly 定义为 typedef struct { int coef; int exp; } PolyTerm;typedef struct { //多项式的顺序存储结构 PolyTerm *data; int last; } SqPoly; 已知稀疏多项式()me m e e n x c x c x c x P +++=Λ2121,其中11≥>>>=-e e e n m m Λ,()m i c i ,,2,10Λ=≠,1≥m 。

相关主题