数据结构的基本知识及常见试题

1、什么是强连通图:一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次。

2、将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为
将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为( C )。
(A) 100    (B) 40    (C) 55    (D) 80
解答:((100-10)/2)+10

3、什么是堆

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。

4、写代码,反转一个单链表,分别以迭代和递归的形式来实现

typedef struct node LinkNode;  
struct node  
{  
    int data;  
    LinkNode* next;  
};  
// 返回新链表头节点  
LinkNode *reverse_link(LinkNode *head)  
{  
    if(head == NULL)  
        return NULL;  
    LinkNode *prev , *curr , *reverse_head , *temp;  
    prev = NULL , curr = head;  
    while(curr->next)  
    {  
        temp = curr->next;  
        curr->next = prev;  
        prev = curr;  
        curr = temp;  
    }  
    curr->next = prev;  
    reverse_head = curr;  
    return reverse_head;  
}  
  
LinkNode *reverse_link_recursive(LinkNode *head)  
{  
    if(head == NULL)  
        return NULL;  
    LinkNode *curr , *reverse_head , *temp;  
    if(head->next == NULL)    // 链表中只有一个节点,逆转后的头指针不变  
        return head;  
    else  
    {  
        curr = head;  
        temp = head->next;    // temp为(a2,...an)的头指针  
        reverse_head = reverse_link_recursive(temp);   // 逆转链表(a2,...an),并返回逆转后的头指针  
        temp->next = curr;    // 将a1链接在a2之后  
        curr->next = NULL;  
    }  
    return reverse_head;      // (a2,...an)逆转链表的头指针即为(a1,a2,...an)逆转链表的头指针  
}  

5、简述什么是hashtable,如何解决hash冲突?

哈希表(Hashtable)又称为“散置”,Hashtable是会根据索引键的哈希程序代码组织成的索引键(Key)和值(Value)配对的集合。Hashtable 对象是由包含集合中元素的哈希桶(Bucket)所组成的。而Bucket是Hashtable内元素的虚拟子群组,可以让大部分集合中的搜寻和获取工作更容易、更快速。


哈希函数(Hash Function)为根据索引键来返回数值哈希程序代码的算法。索引键(Key)是被存储对象的某些属性值(Value)。当对象加入至Hashtable时,它存储在与对象哈希程序代码相符的哈希程序代码相关的Bucket中。当在Hashtable内搜寻值时,哈希程序代码会为该值产生,并且会搜寻与该哈希程序代码相关的Bucket。例如,student和teacher会放在不同的Bucket中,而dog和god会放在相同的Bucket中。所以当索引键是唯一从Hashtable获取元素的性能时表现会较好。Hash的四大优点如下所示。
事先不需要排序。
搜寻速度与数据多少无关。
数字签名的密码技术保密性(Security)高。
可做数据压缩(Data Compression),以节省空间。

1、开放定址法
     用开放定址法解决冲突的做法是:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定 的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。
注意:
①用开放定址法建立散列表时,建表前须将表中所有单元(更严格地说,是指单元中存储的关键字)置空。
②空单元的表示与具体的应用相关。
     按照形成探查序列的方法不同,可将开放定址法区分为线性探查法、线性补偿探测法、随机探测等。
(1)线性探查法(Linear Probing)
该方法的基本思想是:
    将散列表T[0..m-1]看成是一个循环向量,若初始探查的地址为d(即h(key)=d),则最长的探查序列为:
        d,d+l,d+2,…,m-1,0,1,…,d-1
     即:探查时从地址d开始,首先探查T[d],然后依次探查T[d+1],…,直到T[m-1],此后又循环到T[0],T[1],…,直到探查到 T[d-1]为止。
探查过程终止于三种情况:
     (1)若当前探查的单元为空,则表示查找失败(若是插入则将key写入其中);
    (2)若当前探查的单元中含有key,则查找成功,但对于插入意味着失败;
     (3)若探查到T[d-1]时仍未发现空单元也未找到key,则无论是查找还是插入均意味着失败(此时表满)。
利用开放地址法的一般形式,线性探查法的探查序列为:
        hi=(h(key)+i)%m 0≤i≤m-1 //即di=i
用线性探测法处理冲突,思路清晰,算法简单,但存在下列缺点:
① 处理溢出需另编程序。一般可另外设立一个溢出表,专门用来存放上述哈希表中放不下的记录。此溢出表最简单的结构是顺序表,查找方法可用顺序查找。
② 按上述算法建立起来的哈希表,删除工作非常困难。假如要从哈希表 HT 中删除一个记录,按理应将这个记录所在位置置为空,但我们不能这样做,而只能标上已被删除的标记,否则,将会影响以后的查找。
③ 线性探测法很容易产生堆聚现象。所谓堆聚现象,就是存入哈希表的记录在表中连成一片。按照线性探测法处理冲突,如果生成哈希地址的连续序列愈长 ( 即不同关键字值的哈希地址相邻在一起愈长 ) ,则当新的记录加入该表时,与这个序列发生冲突的可能性愈大。因此,哈希地址的较长连续序列比较短连续序列生长得快,这就意味着,一旦出现堆聚 ( 伴随着冲突 ) ,就将引起进一步的堆聚。
(2)线性补偿探测法 
线性补偿探测法的基本思想是:
将线性探测的步长从 1 改为 Q ,即将上述算法中的 j = (j + 1) % m 改为: j = (j + Q) % m ,而且要求 Q 与 m 是互质的,以便能探测到哈希表中的所有单元。
【例】 PDP-11 小型计算机中的汇编程序所用的符合表,就采用此方法来解决冲突,所用表长 m = 1321 ,选用 Q = 25 。
2、拉链法
(1)拉链法解决冲突的方法
     拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数 组T[0..m-1]。凡是散列地址为i的结点,均插入到以T[i]为头指针的单链表中。T中各分量的初值均应为空指针。在拉链法中,装填因子α可以大于 1,但一般均取α≤1。
【例】设有 m = 5 , H(K) = K mod 5 ,关键字值序例 5 , 21 , 17 , 9 , 15 , 36 , 41 , 24 ,按外链地址法所建立的哈希表如下图所示:
           
(2)拉链法的优点
与开放定址法相比,拉链法有如下几个优点:
①拉链法处理冲突简单,且无堆积现象,即非同义词决不会发生冲突,因此平均查找长度较短;
②由于拉链法中各链表上的结点空间是动态申请的,故它更适合于造表前无法确定表长的情况;
③开放定址法为减少冲突,要求装填因子α较小,故当结点规模较大时会浪费很多空间。而拉链法中可取α≥1,且结点较大时,拉链法中增加的指针域可忽略不计,因此节省空间;
④在用拉链法构造的散列表中,删除结点的操作易于实现。只要简单地删去链表上相应的结点即可。而对开放地址法构造的散列表,删除结点不能简单地将被删结 点的空间置为空,否则将截断在它之后填人散列表的同义词结点的查找路径。这是因为各种开放地址法中,空地址单元(即开放地址)都是查找失败的条件。因此在 用开放地址法处理冲突的散列表上执行删除操作,只能在被删结点上做删除标记,而不能真正删除结点。

(3)拉链法的缺点
     拉链法的缺点是:指针需要额外的空间,故当结点规模较小时,开放定址法较为节省空间,而若将节省的指针空间用来扩大散列表的规模,可使装填因子变小,这又减少了开放定址法中的冲突,从而提高平均查找速度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机基础知识(多选) 题号:1 题型:多选题 难度:2 内容:下列说法中,正确的是()。 试题选项: A、一个汉字用1个字节表示 B、在微机中,使用最普遍的字符编码是ASCII码 C、高级语言程序可以编译为目标程序 D、ASCII码的最高位用作奇偶校验位 标准答案: bcd 题号:2 题型:多选题 难度:1 内容:件型(外壳型)计算机病毒主要感染扩展名为() 试题选项: A、COM B、BAT C、EXE D、DOC 标准答案: ac 题号:3 题型:多选题 难度:1 内容: 计算机系统是由()组成 试题选项: A、中央处理器 B、硬件系统 C、打印机 D、软件系统 标准答案: bd 题号:4 题型:多选题 难度:1 内容:下列说法中,正确的是() 试题选项: A、一个汉字用1个字节表示 B、ASCII码用7位二进制表示128个字符 C、汉字国际码的代号为"GB2312--80" D、ASCII码的最高位用作奇偶校验位 标准答案: bcd 题号:5 题型:多选题 难度:1 内容:()不是计算机高级语言 试题选项: A、BASIC B、MASM C、C D、DOS 标准答案: bd 题号:6 题型:多选题 难度:2 内容:关于几个名词的概念,下列叙述正确的是()。 试题选项: A、指令通常由操作数和操作码组成 B、通常使用"字节"表示计算机存储器的长度 C、计算机"字"的长度等于两个字节 D、完成某一任务的指令集合称为语言 标准答案: ab 题号:7 题型:多选题 难度:2 内容: 下列设备中,____可作为存储介质。 试题选项: A、MP3随身听 B、数码相机 C、优(U)盘 D、DVD盘片 标准答案: acd 题号:8 题型:多选题 难度:1 内容: 当运行软盘上的程序时发现该软盘已被病毒感染,此时可采取的措施有() 试题选项: A、用杀毒软件杀毒 B、此磁盘重新格式化,再装入未染病毒的文件继续使用 C、此磁盘不可再使用,应报废 D、可继续运行磁盘上的其他程序 标准答案: ab ~ 题号:9 题型:多选题 难度:2 内容: 下列叙述中正确的是()。 试题选项: A、计算机要长期使用,不要长期闲置不用 B、为了延长计算机的寿命,应避免频繁开关机 C、在计算机附近应避免磁场干扰 D、计算机使用几小时后,应关机一会儿再用 标准答案: abc ~ 题号:10 题型:多选题 难度:2 内容: 下列能用作存储容量单位的是____。 试题选项: A、Byte B、MIPS C、KB D、GB 标准答案: acd ~ 题号:11 题型:多选题 难度:1 内容: 计算机之所以能够应用于各个领域,主要是因为其具有()较突出的特点 试题选项: A、高速处理能力 B、自动运行能力 C、超强记忆能力 D、计算机精确高和可靠的逻辑判断能力 标准答案: abcd ~ 题号:12 题型:多选题 难度:2 内容: 冯·诺依曼计算机结构规定计算机的硬件系统由运算器、存储器、____部分组成。 试题选项: A、键盘 B、显示器 C、控制器 D、输入/输山设备 标准答案: cd ~ 题号:13 题型:多选题 难度:2 内容: 计算机存储容量的基本单位是"字节",一般用大写字母B表示,常用的单位还有KB,MB和 GB,他们之间的换算关系正确的是____。 试题选项: A、1KB=1024B B、1MB=1024x1024B C、1MB=1OOOx1OOOB D、1GB=1OOOx1OOOKB 标准答案: ab ~ 题号:14 题型:多选题 难度:1 内容: 输入设备是微型计算机必不可少的组成部分,常见的输入设备有() 试题选项: A、激光打印机 B、键盘 C、鼠标 D、显示器 标准答案: bc ~ 题号:15 题型:多选题 难度:2 内容: 组成多媒体计算机一般具备的硬件有____。 试题选项: A、声卡 B、CD-ROM C、音箱 D、扫描仪 标准答案: abc ~ 题号:16 题型:多选题 难度:2 内容: 微机总线有____。 试题选项: A、地址总线 B、数据总线 C、通信总线 D、控制总线 标准答案: abd ~ 题号:17 题型:多选题 难度:1 内容: 用AD??.TXT通配名可代表() 试题选项: A、ADSE.TXT B、ADBC.TXT C、ADTE.TXT D、ABC.TXT 标准答案: abc ~ 题号:18 题型:多选题 难度:1 内容:常用的杀毒软件有() 试题选项: A、CPAV B、PCTOOLS C、KILL D、KV300 标准答案: cd ~ 题号:19 题型:多选题 难度:2 内容: 微型计算机的硬件组成包括____。 试题选项: A、CPU B、存储器 C、输入设备 D、输出设备 标准答案: abcd ~ 题号:20 题型
计算机基础知识(多选) 题号:1 题型:多选题 难度:2 内容:下列说法中,正确的是()。 试题选项: A、一个汉字用1个字节表示 B、在微机中,使用最普遍的字符编码是ASCII码 C、高级语言程序可以编译为目标程序 D、ASCII码的最高位用作奇偶校验位 标准答案: bcd 题号:2 题型:多选题 难度:1 内容:件型(外壳型)计算机病毒主要感染扩展名为() 试题选项: A、COM B、BAT C、EXE D、DOC 标准答案: ac 题号:3 题型:多选题 难度:1 内容: 计算机系统是由()组成 试题选项: A、中央处理器 B、硬件系统 C、打印机 D、软件系统 标准答案: bd 题号:4 题型:多选题 难度:1 内容:下列说法中,正确的是() 试题选项: A、一个汉字用1个字节表示 B、ASCII码用7位二进制表示128个字符 C、汉字国际码的代号为"GB2312--80" D、ASCII码的最高位用作奇偶校验位 标准答案: bcd 题号:5 题型:多选题 难度:1 内容:()不是计算机高级语言 试题选项: A、BASIC B、MASM C、C D、DOS 标准答案: bd 题号:6 题型:多选题 难度:2 内容:关于几个名词的概念,下列叙述正确的是()。 试题选项: A、指令通常由操作数和操作码组成 B、通常使用"字节"表示计算机存储器的长度 C、计算机"字"的长度等于两个字节 D、完成某一任务的指令集合称为语言 标准答案: ab 题号:7 题型:多选题 难度:2 内容: 下列设备中,____可作为存储介质。 试题选项: A、MP3随身听 B、数码相机 C、优(U)盘 D、DVD盘片 标准答案: acd 题号:8 题型:多选题 难度:1 内容: 当运行软盘上的程序时发现该软盘已被病毒感染,此时可采取的措施有() 试题选项: A、用杀毒软件杀毒 B、此磁盘重新格式化,再装入未染病毒的文件继续使用 C、此磁盘不可再使用,应报废 D、可继续运行磁盘上的其他程序 标准答案: ab ~ 题号:9 题型:多选题 难度:2 内容: 下列叙述中正确的是()。 试题选项: A、计算机要长期使用,不要长期闲置不用 B、为了延长计算机的寿命,应避免频繁开关机 C、在计算机附近应避免磁场干扰 D、计算机使用几小时后,应关机一会儿再用 标准答案: abc ~ 题号:10 题型:多选题 难度:2 内容: 下列能用作存储容量单位的是____。 试题选项: A、Byte B、MIPS C、KB D、GB 标准答案: acd ~ 题号:11 题型:多选题 难度:1 内容: 计算机之所以能够应用于各个领域,主要是因为其具有()较突出的特点 试题选项: A、高速处理能力 B、自动运行能力 C、超强记忆能力 D、计算机精确高和可靠的逻辑判断能力 标准答案: abcd ~ 题号:12 题型:多选题 难度:2 内容: 冯·诺依曼计算机结构规定计算机的硬件系统由运算器、存储器、____部分组成。 试题选项: A、键盘 B、显示器 C、控制器 D、输入/输山设备 标准答案: cd ~ 题号:13 题型:多选题 难度:2 内容: 计算机存储容量的基本单位是"字节",一般用大写字母B表示,常用的单位还有KB,MB和 GB,他们之间的换算关系正确的是____。 试题选项: A、1KB=1024B B、1MB=1024x1024B C、1MB=1OOOx1OOOB D、1GB=1OOOx1OOOKB 标准答案: ab ~ 题号:14 题型:多选题 难度:1 内容: 输入设备是微型计算机必不可少的组成部分,常见的输入设备有() 试题选项: A、激光打印机 B、键盘 C、鼠标 D、显示器 标准答案: bc ~ 题号:15 题型:多选题 难度:2 内容: 组成多媒体计算机一般具备的硬件有____。 试题选项: A、声卡 B、CD-ROM C、音箱 D、扫描仪 标准答案: abc ~ 题号:16 题型:多选题 难度:2 内容: 微机总线有____。 试题选项: A、地址总线 B、数据总线 C、通信总线 D、控制总线 标准答案: abd ~ 题号:17 题型:多选题 难度:1 内容: 用AD??.TXT通配名可代表() 试题选项: A、ADSE.TXT B、ADBC.TXT C、ADTE.TXT D、ABC.TXT 标准答案: abc ~ 题号:18 题型:多选题 难度:1 内容:常用的杀毒软件有() 试题选项: A、CPAV B、PCTOOLS C、KILL D、KV300 标准答案: cd ~ 题号:19 题型:多选题 难度:2 内容: 微型计算机的硬件组成包括____。 试题选项: A、CPU B、存储器 C、输入设备 D、输出设备 标准答案: abcd ~ 题号:20 题型
很抱歉,我无法提供具体的大连理工大学数据结构期末考试题。但是,我可以为您介绍一下数据结构基本知识常见考点,以帮助您更好地准备考试。 数据结构是计算机科学中非常重要的一门课程,它研究如何组织和存储数据,以及如何高效地操作和处理数据。以下是一些数据结构基本知识常见考点: 1. 数组:数组是一种线性数据结构,它可以存储相同类型的元素,并通过索引访问。了解数组的创建、访问和操作方法是非常重要的。 2. 链表:链表也是一种线性数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。了解链表的插入、删除和遍历操作是常见的考点。 3. 栈和队列:栈和队列是两种常见数据结构。栈是一种后进先出(LIFO)的数据结构,而队列是一种先进先出(FIFO)的数据结构。了解它们的特点、操作和应用场景是重要的。 4. 树:树是一种非线性数据结构,它由节点和边组成。常见的树结构包括二叉树、二叉搜索树和平衡树等。了解树的遍历方式(如前序、中序和后序遍历)、插入和删除操作是常见的考点。 5. 图:图是一种非线性数据结构,它由节点和边组成。了解图的表示方法(如邻接矩阵和邻接表)、遍历方式(如深度优先搜索和广度优先搜索)以及最短路径算法(如Dijkstra算法)是常见的考点。 6. 排序和搜索算法:了解常见的排序算法(如冒泡排序、插入排序、选择排序、快速排序和归并排序)和搜索算法(如线性搜索和二分搜索)是重要的。 以上是数据结构的一些基本知识常见考点,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值