很多同学在产品入门的时候都会考虑到一个问题——产品经理需要懂技术吗?这个问题也许没有准确的答案,但是一个懂技术的产品经理确实有很明显的优势。
- 一方面产品经理在日常工作中,接触到最多的一类人,就是程序员,懂技术能减少与技术同学的沟通成本;
- 另一方面,许多成功的产品经理都是技术出身,因为可以从更全面的维度去规划产品的未来。
所以懂技术是产品经理的加分项,这是毋庸置疑的。为了经营好这一个加分项,产品经理要为自己的技术能力定制一个修行计划。
本文将与大家分享数据类型相关的基础知识,希望可以共同学习,共同进步。
一、基础名词理解
- 数据:对客观事物的符号表示,在计算机科学中指所有能输入到计算机中,并被计算机程序处理的符号的总称。
- 数据项:是组成数据对象的不可分割的最小单位。
- 数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行处理。数据元素可以由数据项组成。
- 数据对象:性质相同的数据元素的集合,是一个数据的一个子集。
为了更清晰地对以上几个名词进行理解,举一个简单的例子:
以学生为例,这里引进几个名词,某班级,学生张三,学生张三的学号与姓名。在这个例子中,学生张三就是一个数据元素,它由张三的学号与姓名组成。那么学号、姓名就是数据项,张三和某班级的其他学生性质相同,并且共同组成了这个某班级。那么某班级就是学生数据元素的集合,即一个数据对象,可以表示为:班级={学生1,学生2,学生3……..}。
了解了基本的数据概念,再来看看数据结构与数据类型:
- 数据结构:相互之间存在一种或多种特定关系的数据元素的集合。
- 存储结构:数据结构在计算机中的表示(映射),即数据的物理结构。
- 数据类型:一个值的集合和定义在这个值集上的一组操作的总称。
- 抽象数据类型:ADT,一个数学模型以及定义在该模型上的一组操作。
还是以学生为例,再引进一个新的名词——学生名单表。
学生名单表就属于数据结构的一种——表结构。学生信息中可能存在年龄,以数字来进行描述,那么年龄就可能是整型这种数据类型的一个字段。
总结来说,数据结构定义了一组按照某些关系结合在一起的数组元素,数据类型不仅定义了一组带结构的数据元素,而且还在其上定义了一组操作。
以下为基本的数据类型整理:
二、基础数据结构类型整理
1. 线性表
定义:线性表是最常用且是最简单的一种数据结构。形如:a1、a2、a3…an,这样含有有限的数据序列,我们就称之为线性表。
相关概念:
- 线性链表:用一组任意的存储单元存储线性表的数据元素。
- 数据域:存储数据元素的域。
- 指针域:存储直接后继存储位置的域。
举例理解:一年12个月,就可表示为线性表的形式,因为每个月只有一个直接前驱和一个直接后继。线性表的顺序结构表示的时候,它的最大的缺点就是在插入和删除的时候,需要移动大量的元素。
2. 栈和队列
定义:
- 栈是指限定仅在表尾进行插入或者删除操作的线性表,表尾端称为栈顶,表头端称为栈底。
- 队列是指只允许在一端进入插入,另一端进行删除的线性表,插入端称为队尾,删除端称为队头。
区别表现为:栈为“后进先出”,队列为“先进先出”。
举例理解:栈和队列都是我们在进行产品逻辑设计时经常使用到,比如:我们进行一个有层级顺序的页面设计时,设定顺序为:页面1->页面2->页面3,当用户在页面3 时,点击返回,必须先返回页面2,才能继续返回到页面1,这就是栈的设计设计思维。
3. 串
定义:串是零个或多个字符组成的有限序列。一般记S=‘a1a2….an ’其中,S是串名,单引号括起的字符序列是串值;ai(1〈=i〈=n)可以是字母,数字或其它字符。
相关概念:
- 串的长度:串中所包含的字符个数为该串的长度。
- 空串:长度为零的串称为空串,它不包含任何字符。
举例理解:串多用于字段的联结或者分解。举例来说:常见的综艺名称”综艺名+更新时间“,就是通过将综艺名字段与综艺更新时间字段这两个串进行联结,最终展现给用户一个合并形成的综艺名称。
4 . 树
定义:树形结构是非线性的数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。
相关概念:
- 度:结点拥有的子树的数量称为树的度。
- 二叉树:每个结点至多有2个子树且子树有左右之分,次序不能颠倒,这样的树称为二叉树。
举例理解:比较常见的微信公众号的顶部菜单和视频网站的分类导航,就采用了树的设计思维。
三、总结
对于非技术型产品经理而言,不需要深入了解每个数据结构的函数、方法,但是了解并理解数据结构的基本概念与特点,不但可以在产品逻辑、业务流程设计时,借鉴数据结构相关的设计思维,而且可以减少和技术同学沟通的成本,更好地相互理解。
以上是本次的数据结构的学习笔记,可能会有一些不合理的地方,希望共同学习共同进步。
参考教材:数据结构(C语言版)
作者:方小白,2年互联网产品经验,专注用户增长与会员运营。
本文由@方小白 原创发布于人人都产品经理。未经许可,禁止转载。
题图来自 Unsplash,基于 CC0 协议
很不错的笔记,能不能在数据类型表中,补充下栗子说明下用法
如果产品懂这么多,我觉得很牛逼。我表示完全不懂在讲啥子
兄弟这是C语言数据结构的课程吧!
同学,以一个技术的角度看来..如果开始接触就是这个,有点难…
呜,非技术的看得一脸懵
一、基础名词理解最后的数据类型整理表格,为何没有举例总结。表示看不懂…
其他的倒是很好理解呢
之前我自己自学过前端开发以及java后台,设计起功能来自己能预估实现的可能性以及成本,另外自己对平面设计也很了解,能够将用户与平台的交互设计得很简洁,这大概就是和开发和ui沟通的最好的收获了
你好 厉害!真的厉害呢!厉害厉害厉害!
更重要的能力应该是构建数据模型的能力和数据关系的能力
这点是和编程的思想是相通
认真的看完了,但是好多还不太理解,有点儿抽象,只是一篇笔记稿。还是要感谢楼主!