云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 经典数据结构面试题(含答案)

经典数据结构面试题(含答案)

  • 62 次阅读
  • 3 次下载
  • 2025/6/24 2:53:49

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.算法的时间复杂度是指执行算法程序所需要的时间

8.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构)

9. 数据结构中,与所使用的计算机无关的是数据的(C)

A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构 10. 下列叙述中,错误的是(B)

A.数据的存储结构与数据处理的效率密切相关 B.数据的存储结构与数据处理的效率无关

C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构

14. 下列数据结构具有记忆功能的是(C)A.队列B.循环队列C.栈D.顺序表 15. 下列数据结构中,按先进后出原则组织数据的是(B) A.线性链表 B.栈 C.循环链表 D.顺序表

17. 下列关于栈的叙述中正确的是(D)A.在栈中只能插入数据B.在栈中只能删除数据

C.栈是先进先出的线性表 D.栈是先进后出的线性表

20. 由两个栈共享一个存储空间的好处是(节省存储空间,降低上溢发生的机率) 21. 应用程序在执行过程中,需要通过打印机输出数据时,一般先形成一个打印作业,将其存放在硬盘中的一个指定(队列)中,当打印机空闲时,就会按先来先服务的方式从中取出待打印的作业进行打印。

22.下列关于队列的叙述中正确的是(C)A.在队列中只能插入数据 B.在队列中只能删除数据 C.队列是先进先出的线性表 D.队列是先进后出的线性表

23.下列叙述中,正确的是(D)A.线性链表中的各元素在存储空间中的位置必须是连续的

B.线性链表中的表头元素一定存储在其他元素的前面 C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的 24.下列叙述中正确的是(A)A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性结构 D.二叉树是线性结构 25. 线性表L=(a1,a2,a3,……ai,……an),下列说法正确的是(D)

A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素

C.表中诸元素的排列顺序必须是由小到大或由大到小D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

26.线性表若采用链式存储结构时,要求内存中可用存储单元的地址(连续不连续都可以)

27. 链表不具有的特点是(B)A.不必事先估计存储空间 B.可随机访问任一元素

C.插入删除不需要移动元素 D.所需空间与线性表长度成正比

30. 在(D)中,只要指出表中任何一个结点的位置,就可以从它出发依次访问到表中其他所有结点。A.线性单链表 B.双向链表 C.线性链表 D.循

环链表

31. 以下数据结构属于非线性数据结构的是(C)A.队列 B.线性表C.二叉树 D.栈

38. 设有下列二叉树,对此二叉树中序遍历的结果是(B) A.ABCDEF B.DBEAFC C.ABDECF D.DEBFCA

1.判断链表是否存在环型链表问题:判断一个链表是否存在环,例如下面这个链表就存在一个环:

例如N1->N2->N3->N4->N5->N2就是一个有环的链表,环的开始结点是N5这里有一个比较简单的解法。设置两个指针p1,p2。每次循环p1向前走一步,p2向前走两步。直到p2碰到NULL指针或者两个指针相等结束循环。如果两个指针相等则说明存在环。 struct link {

int data; link* next; };

bool IsLoop(link* head) {

link* p1=head, *p2 = head;

if (head ==NULL || head->next ==NULL) {

return false; } do{

p1= p1->next;

p2 = p2->next->next;

} while(p2 && p2->next && p1!=p2); if(p1 == p2)

return true; else

return false; }

2,链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下: struct linka {

int data;

linka* next; };

void reverse(linka*& head) {

if(head ==NULL) return;

linka*pre, *cur, *ne; pre=head;

cur=head->next; while(cur) {

ne = cur->next; cur->next = pre; pre = cur; cur = ne; }

head->next = NULL; head = pre; }

还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下: linka* reverse(linka* p,linka*& head) {

if(p == NULL || p->next == NULL) {

head=p; return p; } else {

linka* tmp = reverse(p->next,head); tmp->next = p; return p; } }

3,判断两个数组中是否存在相同的数字 给定两个排好序的数组,怎样高效得判断这两个数组中存在相同的数字?

这个问题首先想到的是一个O(nlogn)的算法。就是任意挑选一个数组,遍历这个数组的所有元素,遍历过程中,在另一个数组中对第一个数组中的每个元素进行binary search。用C++实现代码如下:

bool findcommon(int a[],int size1,int b[],int size2)

{

int i;

for(i=0;i

int start=0,end=size2-1,mid; while(start<=end) {

mid=(start+end)/2; if(a[i]==b[mid]) return true;

else if (a[i]

start=mid+1; } }

return false; }

后来发现有一个 O(n)算法。因为两个数组都是排好序的。所以只要一次遍历就行了。首先设两个下标,分别初始化为两个数组的起始地址,依次向前推进。推进的规则是比较两个数组中的数字,小的那个数组的下标向前推进一步,直到任何一个数组的下标到达数组末尾时,如果这时还没碰到相同的数字,说明数组中没有相同的数字。 bool findcommon2(int a[], int size1, int b[], int size2) {

int i=0,j=0;

while(i

if(a[i]==b[j])

return true; if(a[i]>b[j]) j++; if(a[i]

return false; }

4,最大子序列 问题:

给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大 例如:

整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。 对于这个问题,最简单也是最容易想到的那就是穷举所有子序列的方法。利用三重循环,依次求出所有子序列的和然后取最大的那个。当然算法复杂度会达到O(n^3)。显然这种方法不是最优的,下面给出一个算法复杂度为O(n)的线性算法实现,算法的来源于

搜索更多关于: 经典数据结构面试题(含答案) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 D.算法的时间复杂度是指执行算法程序所需要的时间 8.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及(数据的存储结构) 9. 数据结构中,与所使用的计算机无关的是数据的(C) A.存储结构 B.物理结构 C.逻辑结构 D.物理和存储结构 10. 下列叙述中,错误的是(B) A.数据的存储结构与数据处理的效率密切相关 B.数据的存储结构与数据处理的效率无关 C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构 14. 下列数据结构具有记忆功能的是(C)A.队列B.循环队列C.栈D.顺序表 15. 下列数据结构中,按先进后出原则组织数据的是(B) A

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com