产品经理的技术修行笔记——数据结构篇

11 评论 32629 浏览 199 收藏 9 分钟

懂技术是产品经理的加分项,这是毋庸置疑的。为了经营好这一个加分项,产品经理要为自己的技术能力定制一个修行计划。

很多同学在产品入门的时候都会考虑到一个问题——产品经理需要懂技术吗?这个问题也许没有准确的答案,但是一个懂技术的产品经理确实有很明显的优势。

  • 一方面产品经理在日常工作中,接触到最多的一类人,就是程序员,懂技术能减少与技术同学的沟通成本;
  • 另一方面,许多成功的产品经理都是技术出身,因为可以从更全面的维度去规划产品的未来。

所以懂技术是产品经理的加分项,这是毋庸置疑的。为了经营好这一个加分项,产品经理要为自己的技术能力定制一个修行计划。

本文将与大家分享数据类型相关的基础知识,希望可以共同学习,共同进步。

一、基础名词理解

  • 数据:对客观事物的符号表示,在计算机科学中指所有能输入到计算机中,并被计算机程序处理的符号的总称。
  • 数据项:是组成数据对象的不可分割的最小单位。
  • 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行处理。数据元素可以由数据项组成。
  • 数据对象:性质相同的数据元素的集合,是一个数据的一个子集。

为了更清晰地对以上几个名词进行理解,举一个简单的例子:

以学生为例,这里引进几个名词,某班级,学生张三,学生张三的学号与姓名。在这个例子中,学生张三就是一个数据元素,它由张三的学号与姓名组成。那么学号、姓名就是数据项,张三和某班级的其他学生性质相同,并且共同组成了这个某班级。那么某班级就是学生数据元素的集合,即一个数据对象,可以表示为:班级={学生1,学生2,学生3……..}。

了解了基本的数据概念,再来看看数据结构与数据类型:

  • 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
  • 存储结构:数据结构在计算机中的表示(映射),即数据的物理结构。
  • 数据类型:一个值的集合和定义在这个值集上的一组操作的总称。
  • 抽象数据类型:ADT,一个数学模型以及定义在该模型上的一组操作。

还是以学生为例,再引进一个新的名词——学生名单表。

学生名单表就属于数据结构的一种——表结构。学生信息中可能存在年龄,以数字来进行描述,那么年龄就可能是整型这种数据类型的一个字段。

总结来说,数据结构定义了一组按照某些关系结合在一起的数组元素,数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。

以下为基本的数据类型整理:

二、基础数据结构类型整理

1.  线性表

定义:线性表是最常用且是最简单的一种数据结构。形如:a1、a2、a3…an,这样含有有限的数据序列,我们就称之为线性表。

相关概念

  1. 线性链表:用一组任意的存储单元存储线性表的数据元素。
  2. 数据域:存储数据元素的域。
  3. 指针域:存储直接后继存储位置的域。

举例理解:一年12个月,就可表示为线性表的形式,因为每个月只有一个直接前驱和一个直接后继。线性表的顺序结构表示的时候,它的最大的缺点就是在插入和删除的时候,需要移动大量的元素。

2.  栈和队列

定义:

  • 栈是指限定仅在表尾进行插入或者删除操作的线性表,表尾端称为栈顶,表头端称为栈底。
  • 队列是指只允许在一端进入插入,另一端进行删除的线性表,插入端称为队尾,删除端称为队头。

区别表现为:栈为“后进先出”,队列为“先进先出”。

举例理解:栈和队列都是我们在进行产品逻辑设计时经常使用到,比如:我们进行一个有层级顺序的页面设计时,设定顺序为:页面1->页面2->页面3,当用户在页面3 时,点击返回,必须先返回页面2,才能继续返回到页面1,这就是栈的设计设计思维。

3. 串

定义:串是零个或多个字符组成的有限序列。一般记S=‘a1a2….an ’其中,S是串名,单引号括起的字符序列是串值;ai(1〈=i〈=n)可以是字母,数字或其它字符。

相关概念:

  1. 串的长度:串中所包含的字符个数为该串的长度。
  2. 空串:长度为零的串称为空串,它不包含任何字符。

举例理解:串多用于字段的联结或者分解。举例来说:常见的综艺名称”综艺名+更新时间“,就是通过将综艺名字段与综艺更新时间字段这两个串进行联结,最终展现给用户一个合并形成的综艺名称。

4 . 树

定义:树形结构是非线性的数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。

相关概念:

  1. 度:结点拥有的子树的数量称为树的度。
  2. 二叉树:每个结点至多有2个子树且子树有左右之分,次序不能颠倒,这样的树称为二叉树。

举例理解:比较常见的微信公众号的顶部菜单和视频网站的分类导航,就采用了树的设计思维。

三、总结

对于非技术型产品经理而言,不需要深入了解每个数据结构的函数、方法,但是了解并理解数据结构的基本概念与特点,不但可以在产品逻辑、业务流程设计时,借鉴数据结构相关的设计思维,而且可以减少和技术同学沟通的成本,更好地相互理解。

以上是本次的数据结构的学习笔记,可能会有一些不合理的地方,希望共同学习共同进步。

参考教材:数据结构(C语言版)

 

作者:方小白,2年互联网产品经验,专注用户增长与会员运营。

本文由@方小白 原创发布于人人都产品经理。未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
海报
评论
评论请登录
  1. 很不错的笔记,能不能在数据类型表中,补充下栗子说明下用法

    回复
  2. 如果产品懂这么多,我觉得很牛逼。我表示完全不懂在讲啥子

    回复
  3. 兄弟这是C语言数据结构的课程吧!

    来自广东 回复
  4. 同学,以一个技术的角度看来..如果开始接触就是这个,有点难…

    来自北京 回复
    1. 呜,非技术的看得一脸懵

      来自浙江 回复
  5. 一、基础名词理解最后的数据类型整理表格,为何没有举例总结。表示看不懂…
    其他的倒是很好理解呢

    来自广东 回复
  6. 之前我自己自学过前端开发以及java后台,设计起功能来自己能预估实现的可能性以及成本,另外自己对平面设计也很了解,能够将用户与平台的交互设计得很简洁,这大概就是和开发和ui沟通的最好的收获了

    来自四川 回复
    1. 你好 厉害!真的厉害呢!厉害厉害厉害!

      来自北京 回复
  7. 更重要的能力应该是构建数据模型的能力和数据关系的能力

    这点是和编程的思想是相通

    来自北京 回复
  8. 认真的看完了,但是好多还不太理解,有点儿抽象,只是一篇笔记稿。还是要感谢楼主!

    来自北京 回复