產品經理的技術修行筆記——數據結構篇

11 評論 32444 瀏覽 198 收藏 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. 認真的看完了,但是好多還不太理解,有點兒抽象,只是一篇筆記稿。還是要感謝樓主!

    來自北京 回復