很多同學在產品入門的時候都會考慮到一個問題——產品經理需要懂技術嗎?這個問題也許沒有準確的答案,但是一個懂技術的產品經理確實有很明顯的優勢。
- 一方面產品經理在日常工作中,接觸到最多的一類人,就是程序員,懂技術能減少與技術同學的溝通成本;
- 另一方面,許多成功的產品經理都是技術出身,因為可以從更全面的維度去規劃產品的未來。
所以懂技術是產品經理的加分項,這是毋庸置疑的。為了經營好這一個加分項,產品經理要為自己的技術能力定制一個修行計劃。
本文將與大家分享數據類型相關的基礎知識,希望可以共同學習,共同進步。
一、基礎名詞理解
- 數據:對客觀事物的符號表示,在計算機科學中指所有能輸入到計算機中,并被計算機程序處理的符號的總稱。
- 數據項:是組成數據對象的不可分割的最小單位。
- 數據元素:是數據的基本單位,在計算機程序中通常作為一個整體進行處理。數據元素可以由數據項組成。
- 數據對象:性質相同的數據元素的集合,是一個數據的一個子集。
為了更清晰地對以上幾個名詞進行理解,舉一個簡單的例子:
以學生為例,這里引進幾個名詞,某班級,學生張三,學生張三的學號與姓名。在這個例子中,學生張三就是一個數據元素,它由張三的學號與姓名組成。那么學號、姓名就是數據項,張三和某班級的其他學生性質相同,并且共同組成了這個某班級。那么某班級就是學生數據元素的集合,即一個數據對象,可以表示為:班級={學生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溝通的最好的收獲了
你好 厲害!真的厲害呢!厲害厲害厲害!
更重要的能力應該是構建數據模型的能力和數據關系的能力
這點是和編程的思想是相通
認真的看完了,但是好多還不太理解,有點兒抽象,只是一篇筆記稿。還是要感謝樓主!