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

从零开始学运营,10年经验运营总监亲授,2天线下集训+1年在线学习,做个有竞争力的运营人。了解详情

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

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

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

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

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

一、基础名词理解

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

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

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

赞赏是对原创者的最大认可
4人打赏
评论
欢迎留言交流
  1. 同学,以一个技术的角度看来..如果开始接触就是这个,有点难…

    回复
    1. 呜,非技术的看得一脸懵

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

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

    回复
    1. 你好 厉害!真的厉害呢!厉害厉害厉害!

      回复
  4. 更重要的能力应该是构建数据模型的能力和数据关系的能力

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

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

    回复