第二章_线性表(参考答案)范文

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

第二章线性表

一、填空题

1、数据逻辑结构包括线性结构、树型结构、图型结构这三种类型,树形结构和图形结构合称为非线性结构。

2、在线性结构中,第一个结点没有前驱结点,其余每个结点有且只有个前驱结点,最后一个结点没有后续结点,其余每个结点有且只有一个后续结点。

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

4、在顺序表中,逻辑上相邻的元素,其物理位置一定相邻。在单链表中,逻辑上相邻的元素,其物理位置不一定相邻。

5、在带头结点的非空单链表中,头结点的存储位置由头指针指示,首元素结点的存储位置由头结点的next域指示,除首元素结点外,其它任一元素结点的存储位置由其直接前趋结点的next域指示。

6、阅读下列算法,并补充所缺内容。

void purge_linkst( ListNode *& la )

{

// 从头指针为 la 的有序链表中删除所有值相同的多余元素,并释放被删结点空间ListNode *p,*q;

if(la==NULL) return;

q=la; p = la->link;

while (p)

{

if (p && ___(1)p->data!=q->data___) {q=p; p = p->link;}

else

{

q->link= ___(2)p->link___;

delete(p);

p=___(3)q->link___;

}

}//while

}// purge_linkst

二、选择题

1、在数据结构中,从逻辑上可以把数据结构分成 C。

A、动态结构和静态结构

B、紧凑结构和非紧凑结构

C、线性结构和非线性结构

D、内部结构和外部结构

2、线性表的逻辑顺序与存储顺序总是一致的,这种说法 B。

A、正确

B、不正确

3、线性表若采用链式存储结构时,要求内存中可用存储单元的地址D。

A、必须是连续的

B、部分地址必须是连续的

C、一定是不连续的

D、连续或不连续都可以

4、在以下的述叙中,正确的是B。

A、线性表的线性存储结构优于链表存储结构

B、二维数组是其数据元素为线性表的线性表

C、栈的操作是先进先出

D、队列的操作方式是先进后出

三、综合题

1、已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

A、在P结点后插入S结点的语句序列是((4)、(1));

B、在P结点前插入S结点的语句序列是((7)、(11)、(8)、(4)、(1));

C、在表首插入S结点的语句序列是((5)、(12));

D、在表尾插入S结点的语句序列是((9)、(1)、(6)或(11)、(9)、(1)、(6))(其中6的位置可变);

(1)P->next=S;

(2)P->next=S->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;

2、已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

A、删除P结点的直接后继结点的语句序列是(11、3、14);

B、删除P结点的直接前驱结点的语句序列是(10、12、8、11、3、14);

C、删除P结点的语句序列是(10、12、7、3、14);

D、删除首元结点的语句序列是(12、11、3、14);

E、删除尾元结点的语句序列是(9、11、3、14)或(12、9、11、3、14);

(1)P=P->next;

(2)P->next=P;

(3)P->next= P->next ->next;

(4)P = P->next ->next;

(5)while(P->next!=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);

3、线性表定位操作ListFind(L, x)的功能是:在线性表L中查找是否存在数据元素x,如果存在,返回线性表中和x值相等的第1个数据元素的序号(序号编号从0开始);如果不存在,返回-1。要求编写顺序表的定位操作算法。

int ListFind(Sqlist L, ElemType x) {

ElemType *p;

int i=0;

p = L.elem;

while(i < L.length-1 && !Compare(*p++,x)){

return i;

++i;

}

return -1;

}

相关文档
最新文档