產(chǎn)品經(jīng)理學(xué)技術(shù)之?dāng)?shù)據(jù)結(jié)構(gòu)
今天給產(chǎn)品經(jīng)理普及一下數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,從字面意思來看,就是數(shù)據(jù)的結(jié)構(gòu),所謂的結(jié)構(gòu)就是組成整體各部分的搭配和安排,所以數(shù)據(jù)結(jié)構(gòu)就是數(shù)據(jù)存儲的結(jié)構(gòu)。

數(shù)組:
數(shù)組的本質(zhì)是儲存、管理、操作一組變量,我們看下列的聯(lián)系人表格:

$li_xm='張三';聯(lián)系人中每一行都是一個人的信息,每個信息還是不同的類型,如果在程序中需要處理這些聯(lián)系人的信息,就需要這樣定義(以php舉例):
$li_xm='張三';
$li_xb='男';
$li_nl=18;
$li_gs='A';
這只是張三一個人的信息,如果有成千上萬條像張三這樣的信息呢?
這個時候就需要數(shù)組出馬了,可以用數(shù)組來儲存張三的信息。如下所示:
$xiaoli=arry('張三','男',18,'A')
上面的代碼就是根據(jù)張三信息創(chuàng)建的數(shù)組。
所以數(shù)據(jù)就是一些列數(shù)據(jù)的集合,【張三、男、18、A】這些數(shù)據(jù)在數(shù)組中被稱之為元素。
上面我們知道怎么用一組元素來儲存張三的信息,可是怎么從數(shù)組中取出這些元素呢?其實數(shù)組是使用索引來對應(yīng)每個元素的,如下圖:

在產(chǎn)品設(shè)計中,尤其是列表型的產(chǎn)品設(shè)計,類似商品列表,就是把所有需要展示的數(shù)據(jù)儲存在數(shù)組中,然后通過接口展示在列表界面。默認(rèn)情況下索引是不用來定義的,系統(tǒng)已經(jīng)幫我們做好了,默認(rèn)數(shù)組使用從0開始的數(shù)字依次遞增來對應(yīng)每個元素,這種使用數(shù)字作為索引的數(shù)組就被成為索引數(shù)組。
棧:
棧是指限定僅在表尾進行插入或者刪除操作的線性表,表尾端稱為棧頂,表頭端稱為棧底。
如下圖:a1在棧底,an在棧頂,你可以把他理解為一個底部封口,頂部開放的一個容器,數(shù)據(jù)元素從開口處進入叫做入棧,從開口處取出叫做出棧,所以要想把底部的元素取出,就需要把其他的元素先移除出去。

棧在我們的產(chǎn)品設(shè)計中經(jīng)常用到,比如我們在進行一個有層級順序的頁面設(shè)計時,設(shè)定的順序從A>B>C,那返回的時候也是先從C頁面返回到B頁面,然后再到A頁面。
隊列:
隊列和棧一樣,都是受到一定規(guī)則限制的數(shù)據(jù)結(jié)構(gòu)。隊列是一種特殊的線性表,只允許在表的頭部(front處)進行刪除操作(也就是出隊),在表的尾部(rear處)進行插入操作操作(也就是入隊),這種數(shù)據(jù)結(jié)構(gòu)就叫做隊列。進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊尾。

比如在產(chǎn)品設(shè)計中,注冊頁面需要填寫的內(nèi)容比較多,就分步驟讓用戶填寫,分一步、兩步、三步,這個時候就需要用戶先做好第一步,然后才能操作接下里的二三步。
樹:
樹是一種分層數(shù)據(jù)的抽象模型。現(xiàn)實生活中最常見的樹的例子就是是公司的組織架構(gòu)圖:

樹上的一個元素往往叫做一個節(jié)點,每個樹狀結(jié)構(gòu)都有一個“根”節(jié)點,也就是樹根,從樹根出發(fā)可以延申出“枝干節(jié)點”,樹干結(jié)構(gòu)末端的節(jié)點我們稱之為“葉子節(jié)點”。

樹狀結(jié)構(gòu)一般應(yīng)用在產(chǎn)品的結(jié)構(gòu)設(shè)計、權(quán)限系統(tǒng)設(shè)計和用戶層級設(shè)計等設(shè)計場景,比如微信下面的四個切換tab,就是根節(jié)點控制的4個子節(jié)點。
歡迎小伙伴加我的私人微信:yw5201a1交流。



點擊“閱讀原文”
查看更多干貨
