很多同學(xué)在產(chǎn)品入門的時(shí)候都會(huì)考慮到一個(gè)問題——產(chǎn)品經(jīng)理需要懂技術(shù)嗎?這個(gè)問題也許沒有準(zhǔn)確的答案,但是一個(gè)懂技術(shù)的產(chǎn)品經(jīng)理確實(shí)有很明顯的優(yōu)勢(shì)。
- 一方面產(chǎn)品經(jīng)理在日常工作中,接觸到最多的一類人,就是程序員,懂技術(shù)能減少與技術(shù)同學(xué)的溝通成本;
- 另一方面,許多成功的產(chǎn)品經(jīng)理都是技術(shù)出身,因?yàn)榭梢詮母娴木S度去規(guī)劃產(chǎn)品的未來。
所以懂技術(shù)是產(chǎn)品經(jīng)理的加分項(xiàng),這是毋庸置疑的。為了經(jīng)營(yíng)好這一個(gè)加分項(xiàng),產(chǎn)品經(jīng)理要為自己的技術(shù)能力定制一個(gè)修行計(jì)劃。
本文將與大家分享數(shù)據(jù)類型相關(guān)的基礎(chǔ)知識(shí),希望可以共同學(xué)習(xí),共同進(jìn)步。
一、基礎(chǔ)名詞理解
- 數(shù)據(jù):對(duì)客觀事物的符號(hào)表示,在計(jì)算機(jī)科學(xué)中指所有能輸入到計(jì)算機(jī)中,并被計(jì)算機(jī)程序處理的符號(hào)的總稱。
- 數(shù)據(jù)項(xiàng):是組成數(shù)據(jù)對(duì)象的不可分割的最小單位。
- 數(shù)據(jù)元素:是數(shù)據(jù)的基本單位,在計(jì)算機(jī)程序中通常作為一個(gè)整體進(jìn)行處理。數(shù)據(jù)元素可以由數(shù)據(jù)項(xiàng)組成。
- 數(shù)據(jù)對(duì)象:性質(zhì)相同的數(shù)據(jù)元素的集合,是一個(gè)數(shù)據(jù)的一個(gè)子集。
為了更清晰地對(duì)以上幾個(gè)名詞進(jìn)行理解,舉一個(gè)簡(jiǎn)單的例子:
以學(xué)生為例,這里引進(jìn)幾個(gè)名詞,某班級(jí),學(xué)生張三,學(xué)生張三的學(xué)號(hào)與姓名。在這個(gè)例子中,學(xué)生張三就是一個(gè)數(shù)據(jù)元素,它由張三的學(xué)號(hào)與姓名組成。那么學(xué)號(hào)、姓名就是數(shù)據(jù)項(xiàng),張三和某班級(jí)的其他學(xué)生性質(zhì)相同,并且共同組成了這個(gè)某班級(jí)。那么某班級(jí)就是學(xué)生數(shù)據(jù)元素的集合,即一個(gè)數(shù)據(jù)對(duì)象,可以表示為:班級(jí)={學(xué)生1,學(xué)生2,學(xué)生3……..}。
了解了基本的數(shù)據(jù)概念,再來看看數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)類型:
- 數(shù)據(jù)結(jié)構(gòu):相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。
- 存儲(chǔ)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(映射),即數(shù)據(jù)的物理結(jié)構(gòu)。
- 數(shù)據(jù)類型:一個(gè)值的集合和定義在這個(gè)值集上的一組操作的總稱。
- 抽象數(shù)據(jù)類型:ADT,一個(gè)數(shù)學(xué)模型以及定義在該模型上的一組操作。
還是以學(xué)生為例,再引進(jìn)一個(gè)新的名詞——學(xué)生名單表。
學(xué)生名單表就屬于數(shù)據(jù)結(jié)構(gòu)的一種——表結(jié)構(gòu)。學(xué)生信息中可能存在年齡,以數(shù)字來進(jìn)行描述,那么年齡就可能是整型這種數(shù)據(jù)類型的一個(gè)字段。
總結(jié)來說,數(shù)據(jù)結(jié)構(gòu)定義了一組按照某些關(guān)系結(jié)合在一起的數(shù)組元素,數(shù)據(jù)類型不僅定義了一組帶結(jié)構(gòu)的數(shù)據(jù)元素,而且還在其上定義了一組操作。
以下為基本的數(shù)據(jù)類型整理:
二、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)類型整理
1.? 線性表
定義:線性表是最常用且是最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu)。形如:a1、a2、a3…an,這樣含有有限的數(shù)據(jù)序列,我們就稱之為線性表。
相關(guān)概念:
- 線性鏈表:用一組任意的存儲(chǔ)單元存儲(chǔ)線性表的數(shù)據(jù)元素。
- 數(shù)據(jù)域:存儲(chǔ)數(shù)據(jù)元素的域。
- 指針域:存儲(chǔ)直接后繼存儲(chǔ)位置的域。
舉例理解:一年12個(gè)月,就可表示為線性表的形式,因?yàn)槊總€(gè)月只有一個(gè)直接前驅(qū)和一個(gè)直接后繼。線性表的順序結(jié)構(gòu)表示的時(shí)候,它的最大的缺點(diǎn)就是在插入和刪除的時(shí)候,需要移動(dòng)大量的元素。
2.? 棧和隊(duì)列
定義:
- 棧是指限定僅在表尾進(jìn)行插入或者刪除操作的線性表,表尾端稱為棧頂,表頭端稱為棧底。
- 隊(duì)列是指只允許在一端進(jìn)入插入,另一端進(jìn)行刪除的線性表,插入端稱為隊(duì)尾,刪除端稱為隊(duì)頭。
區(qū)別表現(xiàn)為:棧為“后進(jìn)先出”,隊(duì)列為“先進(jìn)先出”。
舉例理解:棧和隊(duì)列都是我們?cè)谶M(jìn)行產(chǎn)品邏輯設(shè)計(jì)時(shí)經(jīng)常使用到,比如:我們進(jìn)行一個(gè)有層級(jí)順序的頁(yè)面設(shè)計(jì)時(shí),設(shè)定順序?yàn)椋喉?yè)面1->頁(yè)面2->頁(yè)面3,當(dāng)用戶在頁(yè)面3 時(shí),點(diǎn)擊返回,必須先返回頁(yè)面2,才能繼續(xù)返回到頁(yè)面1,這就是棧的設(shè)計(jì)設(shè)計(jì)思維。
3. 串
定義:串是零個(gè)或多個(gè)字符組成的有限序列。一般記S=‘a(chǎn)1a2….an ’其中,S是串名,單引號(hào)括起的字符序列是串值;ai(1〈=i〈=n)可以是字母,數(shù)字或其它字符。
相關(guān)概念:
- 串的長(zhǎng)度:串中所包含的字符個(gè)數(shù)為該串的長(zhǎng)度。
- 空串:長(zhǎng)度為零的串稱為空串,它不包含任何字符。
舉例理解:串多用于字段的聯(lián)結(jié)或者分解。舉例來說:常見的綜藝名稱”綜藝名+更新時(shí)間“,就是通過將綜藝名字段與綜藝更新時(shí)間字段這兩個(gè)串進(jìn)行聯(lián)結(jié),最終展現(xiàn)給用戶一個(gè)合并形成的綜藝名稱。
4 . 樹
定義:樹形結(jié)構(gòu)是非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=1)個(gè)有限節(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。
相關(guān)概念:
- 度:結(jié)點(diǎn)擁有的子樹的數(shù)量稱為樹的度。
- 二叉樹:每個(gè)結(jié)點(diǎn)至多有2個(gè)子樹且子樹有左右之分,次序不能顛倒,這樣的樹稱為二叉樹。
舉例理解:比較常見的微信公眾號(hào)的頂部菜單和視頻網(wǎng)站的分類導(dǎo)航,就采用了樹的設(shè)計(jì)思維。
三、總結(jié)
對(duì)于非技術(shù)型產(chǎn)品經(jīng)理而言,不需要深入了解每個(gè)數(shù)據(jù)結(jié)構(gòu)的函數(shù)、方法,但是了解并理解數(shù)據(jù)結(jié)構(gòu)的基本概念與特點(diǎn),不但可以在產(chǎn)品邏輯、業(yè)務(wù)流程設(shè)計(jì)時(shí),借鑒數(shù)據(jù)結(jié)構(gòu)相關(guān)的設(shè)計(jì)思維,而且可以減少和技術(shù)同學(xué)溝通的成本,更好地相互理解。
以上是本次的數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)筆記,可能會(huì)有一些不合理的地方,希望共同學(xué)習(xí)共同進(jìn)步。
參考教材:數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)
作者:方小白,2年互聯(lián)網(wǎng)產(chǎn)品經(jīng)驗(yàn),專注用戶增長(zhǎng)與會(huì)員運(yùn)營(yíng)。
本文由@方小白 原創(chuàng)發(fā)布于人人都產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
很不錯(cuò)的筆記,能不能在數(shù)據(jù)類型表中,補(bǔ)充下栗子說明下用法
如果產(chǎn)品懂這么多,我覺得很牛逼。我表示完全不懂在講啥子
兄弟這是C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的課程吧!
同學(xué),以一個(gè)技術(shù)的角度看來..如果開始接觸就是這個(gè),有點(diǎn)難…
嗚,非技術(shù)的看得一臉懵
一、基礎(chǔ)名詞理解最后的數(shù)據(jù)類型整理表格,為何沒有舉例總結(jié)。表示看不懂…
其他的倒是很好理解呢
之前我自己自學(xué)過前端開發(fā)以及java后臺(tái),設(shè)計(jì)起功能來自己能預(yù)估實(shí)現(xiàn)的可能性以及成本,另外自己對(duì)平面設(shè)計(jì)也很了解,能夠?qū)⒂脩襞c平臺(tái)的交互設(shè)計(jì)得很簡(jiǎn)潔,這大概就是和開發(fā)和ui溝通的最好的收獲了
你好 厲害!真的厲害呢!厲害厲害厲害!
更重要的能力應(yīng)該是構(gòu)建數(shù)據(jù)模型的能力和數(shù)據(jù)關(guān)系的能力
這點(diǎn)是和編程的思想是相通
認(rèn)真的看完了,但是好多還不太理解,有點(diǎn)兒抽象,只是一篇筆記稿。還是要感謝樓主!