计算机专业基础综合数据结构(线性表)历年真题试卷及答案.docxVIP

  • 0
  • 0
  • 约1.57千字
  • 约 3页
  • 2026-02-09 发布于天津
  • 举报

计算机专业基础综合数据结构(线性表)历年真题试卷及答案.docx

计算机专业基础综合数据结构(线性表)历年真题试卷及答案

考试时间:______分钟总分:______分姓名:______

选择题:

1.下列关于线性表存储结构的叙述中,正确的是()。

A.顺序表的所有元素在内存中连续存储,链表元素可能不连续

B.顺序表支持随机访问,链表不支持随机访问

C.顺序表的插入和删除操作一定比链表快

D.链表的存储密度一定比顺序表高

2.带头结点的单链表为空的条件是()。

A.头结点指针域为NULL

B.第一个元素结点指针域为NULL

C.头结点数据域为NULL

D.所有结点数据域为NULL

3.长度为n的顺序表,在第i个位置插入一个元素,最坏情况下需要移动的元素个数为()。

A.i

B.n-i+1

C.n

D.n+1

填空题:

4.长度为n的顺序表,在第i个位置插入一个元素,需要移动的平均元素个数为______。

算法设计题:

5.设计算法,删除带头结点的单链表L中所有值为x的结点(要求空间复杂度O(1))。

试卷答案

选择题1:A

解析思路:顺序表采用数组实现,元素在内存中连续存储;链表通过指针链接结点,元素可离散存储,故A正确。顺序表支持随机访问(通过下标直接访问),链表不支持(需从头指针遍历),故B错误。顺序表插入/删除需移动元素(最坏O(n)),链表只需修改指针(O(1)),故C错误。链表需额外存储指针,存储密度通常低于顺序表,故D错误。

选择题2:A

解析思路:带头结点单链表的头结点不存储数据,其指针域指向首元结点。空表时,头结点指针域为NULL(无首元结点),故A正确。B是首元结点指针域为NULL的情况(如只有一个结点且其next为NULL);C和D与数据域无关,错误。

选择题3:B

解析思路:顺序表插入元素时,需将位置i及之后的元素后移。最坏情况插入在第一个位置(i=1),需移动所有n个元素(从位置1到n后移)。公式为n-i+1,当i=1时为n,故B正确。A是插入位置i时的移动个数(非最坏),C是插入在末尾时的移动个数(0),D错误。

填空题4:n/2

解析思路:插入位置i从1到n+1,移动元素个数分别为n,n-1,...,0。平均移动个数=(n+(n-1)+...+0)/(n+1)=[n(n+1)/2]/(n+1)=n/2。

算法设计题5:

答案:

```c

voidDeleteX(LinkListL,intx){

ListNode*p=L-next;//p指向首元结点

ListNode*pre=L;//pre指向p的前驱结点

while(p!=NULL){

if(p-data==x){

pre-next=p-next;//删除p结点

free(p);//释放空间

p=pre-next;//p后移

}else{

pre=p;//pre后移

p=p-next;//p后移

}

}

}

```

解析思路:使用双指针pre和p,pre记录前驱,p遍历当前结点。若p-data==x,则通过pre-next跳过p,释放p的空间,并更新p为pre-next;否则pre和p同步后移。空间复杂度O(1),仅使用两个指针。注意处理头结点,避免断链;释放被删除结点空间,防止内存泄漏。

文档评论(0)

1亿VIP精品文档

相关文档