【张三学编程之数据结构篇】-----初识数据结构

       今天, 张三收到了来自学姐女神的礼物,他怀着激动的心情打开了礼物,心里暗暗期待着:“是情书,是情书!!!”,打开之后发现是一本叫《数据结构》的书。书皮微黄,但还是能看得出来它的原主人把它保护的很好。他缓缓的打开了这本散发着女生光环的书,心里充满疑惑,诶?女神这是什么意思呢?作为一个母单直男,他实在是不懂?不过不懂归不懂,聪明的他立刻打开CSDN发帖问  “求助:女神送我《数据结构》是什么意思???”。10分钟之后,各路网友前来围观,很快帖子上了热门,千层楼应地而起。张三激动的划着鼠标,热门上赫然写这 “兄弟,还用想?肯定是希望你像《数据结构》一样出现在她生活中的每时每刻。”   “啊?像《数据结构》?张三懵逼了,所以要女神就要先了解《数据结构》吗?”这时,坐在电脑前的张三突然大笑,连日来苦于如何追求女神的阴霾也一扫而去,原来女神已经给我方向了呀!学好数据结构是第一步。执行力超强的张三,说干就干,马上开始查资料。这时他的心理充满了疑问:

1.数据结构到底是什么呢?

2.是字面意思上的数据+结构吗?

3.数据是我理解的1,2,3,4这样的数据吗?还有没有其他的数据类型呢?

4.结构又是什么呢?我听说过房屋结构,化学上的分子结构,那数据结构又是什么样的呢?它有什么类型?它的作用又是什么样的呢?

5.像我这样只有C基础的人能理解这个数据结构吗?

此时热心的网友写了一系列博文来回答他的问题,那就让我们跟随着张三的脚步一起来学习把!张三能不能追到女神就靠各位父老乡亲了。


前言

数据结构和算法是编程的基础。数据结构之于编程就像语法之于文章,学好数据结构才能写出简洁优美的代码。算法之于编程犹如情感之于文章,融入算法的编程才能是高效灵动。


、什么是数据结构,算法?

1.数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑关系、存储关系及操作。

2. 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单 来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

二,为什么要学习数据结构和算法?

随着应用程序变得越来越复杂和数据越来越丰富,几百万、几十亿甚至几百亿的数据就会出现,而对这么大对数据进行搜索、插入或者排序等的操作就越来越慢,数据结构就是用来解决这些问题的。

三,研究数据结构和算法的目的

数据结构研究的目的:按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器

算法研究的目的是为了更有效的处理数据,提高数据运算效率。

四、数据结构的分类

1,逻辑结构对其进行简单的分类,包括线性结构非线性结构两类。

2,线性结构就是表中各个结点具有线性关系。(类似数学上的线性函数,一个x对应一个y)

        线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

特点:

        a、线性结构是非空集,一般至少含有一个数据或者指针。

        b、线性结构有且仅有一个开始结点一个终端结点

        c、线性结构所有结点都最多只有一个直接前驱结点和一个直接后继结点

线性表就是典型的线性结构,还有栈、队列和串等都属于线性结构。

3,非线性结构是表中各结点有多个对应关系.(类型非线性函数,一对多,多对一.......)

特点:

        a、非线性结构是非空集。 

        b、非线性结构的一个结点可能有多个直接前驱结点和多个直接后继结点。 

在实际应用中,数组、广义表、树结构和图结构等数据结构都属于非线性结构。 

五,常见的数据结构

  • 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
  • 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
  • 数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
  • 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
  • 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
  • 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
  • 堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。
  • 散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。


总结

本文主要介绍了数据结构的定义,类型,特点,张三对数据结构有了初步认识,想要更进一步认识数据结构还请看下篇【张三学编程之数据结构篇】-----详解常见数据结构类型

一键三连+关注!!!期待指正,讨论,互相学习, 一起进步。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值