数据结构入门

        从来不写笔记的我为什么突然想写笔记?最近不知道是怎么回事?感觉自己的记性非常不好,比如接触了一个新东西,就算了解了其实现原理,能跟着思路自己手动完成,但是不过一个星期又忘了?难道是自己老了?从前找东西都是找的度娘,就算是使用过的东西也是同样的找度娘?记性是真的很差。所以现在想把最近所学的东西归纳总结一下,就算忘记了也能不断的通过笔记来复习,都说好记性不如好键盘,最近在学习数据结构,想把数据结构做一个总结,这个只是个人的总结,大牛路过的路望指点其中的不足,作为一名小白我只想把所学的东西做一个记录。

一、为什么要学习数据结构?

        举个例子来说,在古代为什么我们看的武侠电视剧里面的人在修炼武功的时候都要先练习基本功?就像少林寺和尚为什么进门之前要先挑水劈柴念经,为的就是修炼内功,只有修炼好了内功才能在高阶武功上进行深造,一步一步的达到上层。这就是为什么一天屠龙记的周芷若在内功不扎实的情况下修炼九阴真经达不到上层的原因。作为一个程序员,我们学习数据结构的目的就是为了打好基本功,只有这样一步一个脚印的走下去才能达到高级工程师的水平。而且在大型公司面试的时候基本都要求会数据结构,因为我们的程序就是数据结构和算法组成的,所以其研究价值比较高。

二、什么是数据结构?

        数据结构是对在计算机内存中的数据的一种安排。也可以理解为对计算机运算的数据单元的一个抽象。很抽象对不对,反正当初我在学习的时候是没听懂这个是什么意思,但是如果我自己来理解的话,我觉得就是数据与数据之间存在的一种关系,是我们的数据在计算机中的模型。

三、数据结构研究的内容

(一)数据的逻辑结构

            1. 集合结构

                    数据结构中的元素之间除了"同属一个集合" 的相互关系外,别无其他关系。

            2. 线性结构

                    数据结构中的元素存在一对一的相互关系;

            3. 树形结构

                    数据结构中的元素存在一对多的相互关系;

            4. 图形结构

                数据结构中的元素存在多对多的相互关系

    光看这几个名词我们是不太明白它是什么东西的,接下来上图就好理解了。

    根据我们的理解和认知我们大概可以从上图了解到数据结构是个什么东西了。


(二)数据结构的存储结构(物理结构)

            1. 表    

            2.堆栈

            3.队列

            4.数组

            5.树

            6.图


四、线性表

对于表我们重点来研究线性表,什么是线性表?

由零个或多个数据元素组成的有限序列。线性表属于数据结构中逻辑结构中的线性结构。

注意:

(1)线性表是一个序列。

(2)0个元素构成的线性表是空表。

(3)线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。

(4)线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就是说,线性表的长度是有限的。

线性表是线性结构的一种,那么线性表当然也有物理结构,也就是说,线性表有两种,分别是顺序结构的线性表(叫做顺序表)和链式结构的线性表(叫做链表)。

(一)顺序存储方式的线性表——顺序表

顺序表是指顺序存储结构的线性表,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

顺序表表现在物理内存中,也就是物理上的存储方式,事实上就是在内存中找个初始地址,然后通过占位的形式,把一定的内存空间给占了,然后把相同数据类型的数据元素依次放在这块空地中。注意,这块物理内存的地址空间是连续的。举个例子来说就是“一个萝卜一个坑”、“排队”等表现形式。

顺序表的数据结构的代码表现形式为:

class Student{

Student[] data;

int size;

}

顺序表的应用:

ArrayList,Vector,ArrayQueue,ArrayDeque,PriorityQueue。

并发包:CopyOnWriteArrayList、ArrayBlockingQueue、PriorityBlockingQueue等。

(一)链式存储方式的线性表——链表

链表的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。

链表的分类:

1.单向链表

2.单向循环链表

将单链表中的终端结点的指针由空指针指向头结点,这样一来就使整个单链表形成了一个环,这种头尾相连的单链表称为单向循环链表,简称循环链表。

3.双向链表

4.双向循环链表

双向循环列表是单向循环链表的每个结点中,在设置一个指向其前驱结点的指针域,这样两个单向循环链表就构成了双向循环链表。

单向链表的数据结构的代码表现形式为:

class Node{

Object data;    //元素  数据域

Node next;      //指向当前节点的下一个元素结点

}

双向链表的数据结构的代码表现形式为:

class Node{

Object data;    //元素  数据域

Node prev;      //指向当前节点的上一个节点

Node next;      //指向当前节点的下一个节点

}

单链表的应用:MessageQueue、LinkedBlockingQueue(并发包)。

双链表的应用:LinkedList、LinkedBlockingDeque(并发包)。

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

推荐阅读更多精彩内容

  • 第一章:R语言的介绍1.典型的数据分析步骤 2.为什么要使用R语言进行数据分析 3.R的使用R的多数功能是由程序内...
    Mr_dvbkhm阅读 1,507评论 0 0
  • 第一部分:猴子课程学习简要 数据分析系统的四个步骤:1、房子设计—设计结构2、从哪开始盖房子—R环境3、准备材料—...
    壹亮3278阅读 1,128评论 0 51
  • 程序= 数据结构+ 算法 数据结构分成逻辑结构和物理结构,其中 逻辑结构指的是数据元素之间的相互关系,物理结构指的...
    Thomas的开发自留地阅读 740评论 0 5
  • 1. 算法 + 数据结构 = 程序 问题(problem):从输入到输出的一种映射函数 数据结构(Data Str...
    亦一银河阅读 546评论 0 0
  • 周日天晴。我们下午去了林恩峡谷公园。人很多,没地方停车。我们换了好几个地方才停了车。地面湿润,空气新鲜,人不那么少...
    小王加油啊阅读 174评论 0 0