iOS開發 資料結構

2021-09-29 20:54:37 字數 1607 閱讀 4429

集合結構 線性結構 樹形結構 圖形結構

資料結構的儲存

資料結構的儲存一般常用的有兩種 順序儲存結構 和 鏈式儲存結構

發揮想象力啊。 舉個列子。陣列。1-2-3-4-5-6-7-8-9-10。這個就是乙個順序儲存結構 ,儲存是按順序的 舉例說明啊。 棧。做開發的都熟悉。棧是先進後出 ,後進先出的形式 對不對 ?!他的你可以這樣理解

hello world 在棧裡面從棧底到棧頂的邏輯依次為 h-e-l-l-o-w-o-r-l-d 這就是順序儲存 再比如 佇列 ,佇列是先進先出的對吧,從頭到尾 h-e-l-l-o-w-o-r-l-d 就是這樣排對的

再次發揮想象力 這個稍微複雜一點 這個我一直弄好 ,回頭找美工問問,再貼上 例如 還是乙個陣列

1-2-3-4-5-6-7-8-9-10 鏈式儲存就不一樣了 1(位址)-2(位址)-7(位址)-4(位址)-5(位址)-9(位址)-8(位址)-3(位址)-6(位址)-10(位址)。每個數字後面跟著乙個位址 而且儲存形式不再是順序 ,也就說順序亂了,1(位址) 1後面跟著的這個位址指向的是2,2後面的位址指向的是3,3後面的位址指向是誰你應該清楚了吧。他執行的時候是 1(位址)-2(位址)-3(位址)-4(位址)-5(位址)-6(位址)-7(位址)-8(位址)-9(位址)-10(位址),但是儲存的時候就是完全隨機的。明白了?!

單向鍊錶\雙向鍊錶\迴圈鍊錶

還是舉例子。理解最重要。不要去死記硬背 哪些什麼。定義啊。邏輯啊。理解才是最重要滴

a->b->c->d->e->f->g->h. 這就是單向鍊錶 h 是頭 a 是尾 像乙個只有乙個頭的火車一樣 只能乙個頭拉著跑

陣列和鍊錶區別:

陣列:陣列元素在記憶體上連續存放,可以通過下標查詢元素;插入、刪除需要移動大量元素,比較適用於元素很少變化的情況

鍊錶:鍊錶中的元素在記憶體中不是順序儲存的,查詢慢,插入、刪除只需要對元素指標重新賦值,效率高

迴圈鍊錶是與單向鍊錶一樣,是一種鏈式的儲存結構,所不同的是,迴圈鍊錶的最後乙個結點的指標是指向該迴圈鍊錶的第乙個結點或者表頭結點,從而構成乙個環形的鏈。發揮想象力 a->b->c->d->e->f->g->h->a. 繞成乙個圈。就像蛇吃自己的這就是迴圈 不需要去死記硬背哪些理論知識。

二叉樹/平衡二叉樹

樹形結構下,兩個節點以內 都稱之為二叉樹 不存在大於2 的節點 分為左子樹 右子樹 有順序 不能顛倒 ,懵逼了吧,你肯定會想這是什麼玩意,什麼左子樹右子樹 ,都什麼跟什麼鬼? 現在我以普通話再講一遍,你把二叉樹看成乙個人 ,人的頭呢就是樹的根 ,左子樹就是左手,右子樹就是右手,左右手可以都沒有(殘疾嘛,宣告一下,絕非歧視殘疾朋友,勿怪,勿怪就是舉個例子,i am very sorry) , 左右手呢可以有乙個,就是不能顛倒。這樣講應該明白了吧

二叉樹有五種表現形式

1.空的樹(沒有節點)可以理解為什麼都沒 像空氣一樣

2.只有根節點。 (理解乙個人只有乙個頭 其他的什麼都沒,說的有點恐怖)

3.只有左子樹 (乙個頭 乙個左手 感覺越來越寫不下去了)

4.只有右子樹

5.左右子樹都有

二叉樹可以轉換成森林 樹也可以轉換成二叉樹。這裡就不介紹了 你做專案絕對用不到

資料結構大致介紹這麼多吧。理解為主, 別死記,死記沒什麼用。

iOS開發 資料結構 冒泡和快速排序

1.氣泡排序 有大到小 void bubble int arr,int len for int i 0 i for int j 0 j if arr i 1.快速排序 快速排序採用的思想是分治思想。快速排序是找出乙個元素 理論上可以隨便找乙個 作為基準 pivot 然後對陣列進行分割槽操作,使基準左...

ios面試資料結構與演算法

1 不用中間變數,變換a和b的值 1.中間變數 void swap int a,int b 2.加法 void swap int a,int b 3.異或 相同為0,不同為1.可以理解為不進製加法 void swap int a,int b 2 求最大公約數 1.直接遍曆法 int maxcommo...

iOS常用演算法和資料結構

1.集合結構 線性結構 樹形結構 圖形結構 1.1 集合結構 就是乙個集合,就是乙個圓圈中有很多個元素,元素與元素之間沒有任何關係 1.2 線性結構 就是乙個條線上站著很多個人。這條線不一定是直的。也可以是彎的。也可以是值的 相當於一條線被分成了好幾段的樣子。線性結構是一對一的關係。1.3 樹形結構...