链表 队列 基本概念 为什么使用二叉查找树 抽象数据类型

文章目录

      • 0.抽象数据类型(ADT)的优点?
      • 1.为什么需要链表?
      • 2.链表的概念?
      • 3.队列的概念?
      • 4.为什么需要二叉查找树?

0.抽象数据类型(ADT)的优点?

  1. ADT版本可读性高,隐藏编程细节,对终端用户隐藏数据表示的细节。
  2. 可复用。用户接口是根据抽象操作定义的,不是根据某些特定的数据表示和算法来定义。
  3. 方便找bug,如果程序运行出现问题,可以把问题定位到具体函数上。如果有更好的方法,只需重写相应的函数。
  4. 可扩展性好,如果需要性能,可添加新函数,不用修改实现程序。

1.为什么需要链表?

  1. 使用数组时,数据表示不够灵活。如果只需20个元素,程序不必分配存放500个元素的空间。所以应使用动态内存分配来表示数据,使所需内存量在运行时确定。
  2. 使用malloc分配合适的内存空间,此时数据的查找不方便。添加数据时,如果输入300个数据,需要malloc300次,无法保证调用malloc()都能分配到连续的内存块,意味着数据不一定被连续存储。 此时需要存储300个指针,每个指针指向一个单独存储的结构。
  3. 使用malloc为新结构分配空间时,也为新指针分配空间。每个新结构中包含指向next结构的指针。创建新结构时,可以把该结构地址存储在上一个结构中。这样可以良好的表示和查找数据。
  4. 链表结构含有指向同类型结构的指针。

2.链表的概念?

定义一个结构体,里面包含了几个变量,还有指向同类型结构的指针。

#define TSIZE 45
struct film{char title[TSIZE];int rating;struct film * next;
}
struct film * head;
  1. 需要一个单独的指针存储第一个结构的地址,被称为头指针。
  2. 如果加入新的数据,首先分配内存空间,然后把新结构的地址存储在第一个结构的next成员中,并把新结构的next成员设置为NULL,表明该结构是链表中最后一个结构。
  3. 显示这个链表,根据该项存储的地址定位下一个项。
  4. 释放链表,调用free。

在这里插入图片描述

3.队列的概念?

  1. 队列是具有两个特殊属性的链表,新项只能添加到链表的末尾,只能从链表的开头移除项。先进先出的数据形式。

4.为什么需要二叉查找树?

  1. 访问元素有两种,随机访问:使用数组下标直接访问该数组中的任意元素;顺序访问:对于链表而言,必须从链表首节点开始,逐个节点移动到要访问的节点。
  2. 用数组可以实现二分查找,因为可以使用数组下标确定数组中任意部分的中点。但是链表只支持顺序访问,不提供跳至中间节点的方法,所以链表中不能使用二分查找。
  3. 有一种数据形式的需求,既支持频繁插入和删除项,又支持频繁查找。此时需要二叉查找树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑盒测试还适用于测试软件,软件测试 黑盒测试中的决策表技术

决策表技术是用于黑盒测试的广泛使用的用例设计技术之一。这是一种系统方法,它以表格形式捕获各种输入组合及其各自的系统行为。它也称为因果表。该技术用于系统地选择测试用例; 它节省了测试时间,并为软件应用程序的测试区域提供了良好的覆盖。决策表技…

统计一行文本的单词个数

统计一行文本的单词个数 习题6-8 统计一行文本的单词个数 (15 分) 本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输…

戴尔计算机windows未能启动,戴尔电脑windows7无法启动安装过程怎么办

windows7无法启动安装过程怎么办?暗黄win7系统的时候经常遇见这种问题可能是硬件问题导致的,还有可能是系统设置问题导致的,我们具体原因具体分析,一起来看看解决方法,动手实践起来吧!1、方法一&#xff1a…

c语言 数据结构 list、queue、tree抽象数据类型的定义与实现 详尽代码和注释

本文使用c语言定义并实现list、queue、tree抽象数据类型,代码有详尽注释,可以通过代码熟悉原理并运用数据结构。 0.ADT基础知识 类型包括两类信息,属性和操作。在编程时,根据编程问题匹配合适的数据类型。 定义一个新的数据类型…

局域网服务器没显示,无法登录服务器 局域网也不显示连接

什么情况啊 论坛上很多这种情况 客服快来远程帮我解决一下!!!!********************************************************************************[星际争霸重置版]客户端到服务器Ping测试:服务器,223.25…

css 回到首页按钮,js+css实现回到顶部按钮(back to top)

本文实例介绍了jscss实现回到顶部按钮的方法,分享给大家供大家参考,具体内容如下效果htmlcssp#back-to-top{position:fixed;bottom:100px;right:80px;}p#back-to-top a{text-align:center;text-decoration:none;color:#d1d1d1;display:block;width:30px;…

Java Set基础知识

Set集合中不包含重复对象。 HashSet: HashSet的底层用哈希散列表来存储对象。其中的散列码是由关键字的信息内容确定的。关键字到散列码的转换是自动执行的。 存储元素时底层要做的判断:1.调用元素的hashCode()方法,直接访问对应的数组元素,有没有这个哈希值,没有就…

c语言基础练习题 字符串输入scanf/gets 字符串赋值、比大小

PTA上C语言程序设计练习题,包含查找书籍、字符串排序。主要用到字符串输入scanf/gets 字符串赋值、比大小等知识。 1.查找书籍 习题9-4 查找书籍 (20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和…

ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路

在web开发过程当中,我们经常需要在前台页面输入关键词进行数据的搜索,我们通常使用的搜索方式是将搜索结果用另一个页面显示,这样的方式对于搭建高性能网站来说不是最合适的,今天给大家分享一下如何使用 jquery,MySQL …

esxi 修改服务器配置失败,R720服务器安装 ESXI 5.5update1后出现XXX错误

R720服务器,安装ESXI5.5UPDATE1 (DELL 的版本)后,安装了几个WIN2003及CENTOS的虚拟机。启用了一台2003和一台CENTOS6.5没有安装vCenter Server从vSphere Client端连接到esxi5.5服务器,发现每次重新启动ESXI,启动事件里面有很多类似…

(哈希)两数之和(leetcode 1)

1.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意…

丢失的数字

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以所有的数字都在范围 [0,3…

ftp服务器收集文件,ftp服务器收集文件

ftp服务器收集文件 内容精选换一换为了对源端服务器进行迁移可行性评估以及为后续目的端服务器的选择和配置提供必要性数据,迁移Agent会收集源端服务器的相关信息并上报到主机迁移服务。收集的Windows操作系统的具体数据如表1所示。收集的Linux操作系统的具体数据如…

STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

一、stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出。 STM32FXXXIGT6一共9组IO:PA~ PI,其中PA~ PH每组16个IO,PI只有PI0~PI11。…

STM32-时钟-时钟树-时钟初始化配置

1.STM32时钟 STM32有5个时钟源:HSI、HSE、LSI、LSE、PLL HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接…

pe系统 服务器维护,FirPE 维护系统

前言年更项目更新啦~~~,这次修复了一些BUG,此外还增加了亿点特性。首次使用WinRE注册表,使得WinPE速度更快了。系统简介FirPE 是一款系统预安装环境(Windows PE),它具有简约、易操作等特点,使用起来十分人性化。以U盘作…

STM32-Systick滴答定时器-延时函数

1.STM32-Systick滴答定时器 Systick定时器,是一个简单的定时器,对于ST的CM3,CM4,CM7内核芯片,都有Systick定时器。 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如…

华为服务器更改从系统盘启动不了,华为服务器设置启动项

华为服务器设置启动项 内容精选换一换对于已安装Cloud-Init/Cloudbase-Init的云服务器,首次执行切换/故障切换操作,或者创建容灾演练后,系统第一次启动时会运行Cloud-Init/Cloudbase-Init,为云服务器重新注入初始化数据&#xff0…

STM32-NVIC中断优先级分组-中断优先级设置

STM32-中断优先级管理NVIC 1.NVIC中断优先级分组 NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。STM32F中文参考手册中搜索向量表可以找到相应的中断说明。 CM4/CM7 内核支持256个中断,其中包含了16个内核中断和240个外部中…

hyper-v虚拟服务器内存满了,在Hyper-V Dynamic Memory里设置虚拟内存

Hyper-V R2 SP1版中加入了动态内存技术,关于内存分配的猜想也随之结束。当VMware可以自动进行虚拟内存分配的时候,Hyper-V通过动态内存让用户可以调整虚拟内存的设置。这种灵活性为主机内存分配方式提供了参考,有效提高了精确度和降低难度。通…