1. 数据结构简介

数据结构可以定义为数据元素组,它提供了在计算机中存储和组织数据的有效方法,以便可以有效地使用它。 数据结构的一些示例是:数组,链表,堆栈,队列等。数据结构广泛用于计算机科学的几乎每个方面,即操作系统,编译器设计,人工智能,图形等等。

数据结构是许多计算机科学算法的主要部分,因为它们使程序员能够以有效的方式处理数据。 它在提高软件或程序的性能方面发挥着重要作用,因为软件的主要功能是尽可能快地存储和检索用户的数据。

基本术语

数据结构是任何程序或软件的构建块(基础块)。为程序选择适当的数据结构对于程序员来说是最困难的任务。就数据结构而言,使用以下术语 -

数据:数据可以定义为基本值或值集合,例如,学生的姓名和ID,成绩等就是学生的数据。

组项:具有从属数据项的数据项称为组项,例如,学生的姓名由名字和姓氏组成。

记录:记录可以定义为各种数据项的集合,例如,如果以学生实体为例,那么学生的名称,地址,课程和标记可以组合在一起形成学生的记录。

文件:文件是一种类型实体的各种记录的集合,例如,如果类中有60名员工,则相关文件中将有20条记录,其中每条记录包含有关每个员工的数据。

属性和实体:实体表示某些对象的类。它包含各种属性。每个属性表示该实体的特定属性。

字段:字段是表示实体属性的单个基本信息单元。

为什么需要数据结构

随着应用程序变得越来越复杂,数据量日益增加,可能会出现以下问题:

  • 处理器速度:要处理非常大的数据,需要高速处理,但随着数据逐日增长到每个实体数十亿个文件,处理器可能无法处理大量数据。

  • 数据搜索:假设商店的库存大小是100860个商品,如果应用程序需要搜索某一特定商品,则每次需要遍历100860个商品,这会导致搜索过程变慢。

  • 大量请求:如果成千上万的用户在Web服务器上同时搜索数据,在此过程中可能在短时会有一个非常大请求而导致服务器处理不了。

为了解决上述问题,使用数据结构。组织数据以形成数据结构,使得不需要搜索所有项目并且可以立即搜索所需数据。

数据结构的优点

  • 效率:程序的效率取决于数据结构的选择。 例如:假设有一些数据,需要执行搜索特定记录。 在这种情况下,如果在数组中组织数据,则需要逐个元素地搜索。 因此,在这里使用数组可能效率不高。 有更好的数据结构可以使搜索过程像有序数组,二进制搜索树或哈希表一样高效。
  • 可重用性:数据结构是可重用的,即当实现了特定的数据结构,就可以在其他地方使用它。也将数据结构的实现编译到不同客户端使用的程序库中。
  • 抽象:数据结构由ADT指定,它提供抽象级别。 客户端程序仅通过接口使用数据结构,而不涉及实现细节。

数据结构分类

image

1. 线性数据结构

如果数据结构的所有元素按线性顺序排列,则称为线性数据结构。 在线性数据结构中,元素以非分层方式存储,除了第一个和最后一个元素,它的每个元素具有后继元素和前导元素。

线性数据结构的类型如下:

  • 数组:数组是类似数据项的集合,每个数据项称为数组的元素。 元素的数据类型可以是任何有效的数据类型,如charintfloatdouble
    数组的元素共享相同的变量名,但每个元素都带有一个不同的索引号,这些索引号也称为下标。 数组可以是一维的,二维的或多维的。

示例:数组age的各个元素是:

age[0], age[1], age[2], age[3],.... age[98], age[99]
  • 链表:链表是一种线性数据结构,用于维护内存中的列表。 它可以看作存储在非连续内存位置的节点集合。链表中的每个节点都包含指向其相邻节点的指针。

  • 堆栈 :堆栈是一个线性列表,其中只允许在一端插入和删除,称为顶部
    堆栈是一种抽象数据类型(ADT),可以在大多数编程语言中实现。 它被命名为堆栈,因为它的行为类似于真实世界的堆栈,例如:成堆的板块或卡片组等,只能在最顶面上操作。

  • 队列:队列是一个线性列表,它的元素只能在一端插入(添加),也被称为后端,而只在另一端出队(删除),也被称为前端。

2. 非线性数据结构

非线性数据结构不形成序列,即每个项目或元素以非线性排列与两个或更多个其他项目连接。 数据元素不按顺序结构排列。

非线性数据结构的类型如下:

  • :树是多级数据结构,其元素之间具有层次关系,树的元素也称为节点。层次中最底层的节点称为叶节点,而最顶层节点称为根节点。 每个节点都包含指向相邻节点的指针。
    树数据结构基于节点之间的父子关系。 除了叶节点之外,树中的每个节点可以具有多个子节点,而除了根节点之外,每个节点可以具有最多一个父节点。 树可以分为许多类别,本教程在稍后章节中将对此进行讨论。

  • :图可以定义为由称为边缘的链接连接的元素集(由顶点表示)的图表示。 图不同于树,图可以有循环而树不能具有循环。

数据结构的操作

  • 遍历:每个数据结构都包含一组数据元素。遍历数据结构表示访问数据结构的每个元素,以便执行某些特定操作,如搜索或排序。示例 :如果需要计算学生在6个不同科目中获得的分数的平均值,需要遍历完整的分数数组并计算总和,然后将总分数除以科目数,即6, 最后得到平均值。

  • 插入:插入是在任何位置将元素添加到数据结构的过程。如果数据结构的大小是n,那么只能在n-1个数据元素之间插入元素。

  • 删除:从数据结构中删除元素的过程称为删除。 可以在任何随机位置删除数据结构中的元素。如果要从空数据结构中删除元素,则会发生下溢。

  • 搜索:在数据结构中查找元素位置的过程称为搜索。 有两种算法可以执行搜索,即线性搜索和二进制搜索。在本教程后面讨论这两种搜索算法。

  • 排序:按特定顺序排列数据结构的过程称为排序。 有许多算法可用于执行排序,例如,插入排序,选择排序,冒泡排序等。

  • 合并:当两个列表分别为大小为MN的列表A和列表B时,相似类型的元素,连接产生第三个列表,列表C的大小(M + N),则此过程称为合并。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352