常见数据结构之(数组、栈、链表、队列、树)

常见的数据结构,有以下几种:

1、数组(Array)

2、栈(Stack)

3、链表(Linked List)

4、队列(Queue)

5、树(Tree)

6、图(Graph)

7、堆(Heap)

那么我们分别对他们进行一个整理总结。


一、数组

        数组就是可以在内存中存储多个元素的结构,其中的元素类型必须相同,而且在内存中连续的,数组的元素是通过数组的下标访问,不是从1开始,而是从0开始

    栗子:int [ ]  data  = new int[50];

                data[0] = 1; 

            它表示初始化了一个整型数组,数组名为data,数组长度是50,每个元素类型都是int型,在内存中的地址是连续的。并且赋值第一个元素为1。

        因为数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是读取数据比较容易,插入和删除比较困难。简单解释一下为什么,在读取数据时,只需要告诉数组要从哪个位置(索引)取数据就可以了,数组会直接把你想要的位置的数据取出来给你。插入和删除比较困难是因为这些存储数据的内存是连续的,要插入和删除就需要变更整个数组中的数据的位置。

优点

1、按照索引查询速度快,遍历数组方便。

缺点:

1、数组只能存储一种类型的元素。

2、数组的大小定义完之后固定,无法扩容。

3、添加和删除的操作慢,因为数组内存地址是连续的,需要移动其他元素

适用于频繁查询,对存储空间要求不大,而且很少删除和增加元素的情况。


二、栈

        栈只允许在栈顶进行操作,栈底不允许操作。栈的特点是:先进后出,或者是后进先出。在栈顶放入元素的操作是入栈,取出元素的操作是出栈。

        栗子:栈的结构很像集装箱,越先放进去的东西,越晚才能拿出来,最后放进去的东西,最先拿出来。


三、链表

        链表是存储单元上不连续的的存储结构,数据元素的逻辑顺序是通过链表的指针地址来实现的。每个元素包含两个节点。一个节点是存储元素的数据域,另一个节点是指向下一个节点的指针域。根据指针的指向,可以行成不同的结构,例如:单链表,双向链表和循环链表。

        链表是由一系列的节点组成,这些节点不必在内存中连续,当添加和删除元素的时候,只需要改变相关节点的指针指向即可,效率很高。

        单链表:最后一个结点的指针域设置为空(NULL),作为链表的结束标志,表示它没有后继结点。

        双向链表:每个节点的指针域都有两个指针,分别指向它的后继和前驱,所以,从从任意节点开始,都能方便的访问它的前驱节点和后继节点。

        循环链表:从单链表可知,最后一个节点的指针域指向NULL,当我们将尾指针指向头结点,那么就形成了一个循环链表。

    优点:1、不需要初始化容量,可以任意增减元素。

               2、添加或者删除元素时,只需要改变前后两个元素的指针指向即可,删除和添加元素会很快。

    缺点:1、查找元素需要遍历链表来实现,很耗时。

               2、链表存在大量的指针域,占用空间大。


四、队列

        队列类似于栈,不同的是队列是在一端增加元素,在另一端取出元素,特点是:先入先出后入后出。放入元素的操作被称为入队,取出元素的操作被称为出队。

        栗子:队列的结构像是一根水管,从一个口入,另一个口出。


五、树

     上面的链表、队列、栈,都是线性表,因为其中每个数据元素只有一个前驱和一个后继,是一对 

一的关系。假如是一对多的关系呢?这种数据结构就是

      树是由n个(n>=0,n=0是,是一棵空树)有限节点构成的,是一个具有层次关系的集合。它看起来像是一棵倒挂的树,也就是说根朝上,而叶子朝下的。

      特点:1、每个节点具有零个或者多个子节点。

                 2、没有父节点的节点称为根节点。

                 3、每一个非根节点有且只有一个父节点。

                 4、除了根节点以外,每个子节点可分为多个不相交的子树。

      二叉树是树的一种,每个节点最多可具有两个子树,即结点的度最大为2(结点度:结点拥有的子树数)。


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

推荐阅读更多精彩内容