前言:記錄了總6w字的面經(jīng)知識點(diǎn),文章中的知識點(diǎn)若想深入了解,可以點(diǎn)擊鏈接學(xué)習(xí)。由于文本太多,按類型分開。這一篇是數(shù)據(jù)結(jié)構(gòu)常問問題總結(jié),有幫助的可以收藏。
1.棧和堆的區(qū)別:
- GC方面:棧保持著先進(jìn)后出的原則,是一片連續(xù)的內(nèi)存域,有系統(tǒng)自動分配和維護(hù),產(chǎn)生的垃圾系統(tǒng)自動釋放。而堆是無序的,他是一片不連續(xù)的內(nèi)存域,用戶自己來控制和釋放,如果用戶自己不釋放的話,當(dāng)內(nèi)存達(dá)到一定的特定值時,通過垃圾回收器(GC)來回收。
- 存儲方面:棧通常保存著我們代碼執(zhí)行的步驟,如方法變量等等。而堆上存放的則多是對象,數(shù)據(jù)等。我們可以把棧想象成一個接著一個疊放在一起的盒子(越高內(nèi)存地址越低)。當(dāng)我們使用的時候,每次從最頂部取走一個盒子,當(dāng)一個方法(或類型)被調(diào)用完成的時候,就從棧頂取走接著下一個。堆則不然,像是一個倉庫,儲存著我們使用的各種對象等信息,跟棧不同的是他們被調(diào)用完畢不會立即被清理掉。
- 緩存方面:棧使用的是一級緩存,他們通常都是被調(diào)用時處于存儲空間中,調(diào)用完畢立即釋放;堆是存放在二級緩存中,生命周期由虛擬機(jī)的垃圾回收算法來決定(并不是一旦成為孤兒對象就能被回收)。所以調(diào)用這些對象的速度要相對來得低一些。
- 存儲方面:棧(Stack)是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中,變量會被分配在棧上來進(jìn)行操作。堆(heap)是用于為引用類型的實(shí)例(對象),分配空間的內(nèi)存區(qū)域,在堆上創(chuàng)建一個對象,會將對象的地址傳給棧上的變量(反過來叫變量指向此對象,或者變量引用此對象)-----也就是棧上的變量指向了堆上地址為XXX的實(shí)例(對象)。
2.棧溢出一般是由什么原因?qū)е碌?/h3>
- 無限遞歸。函數(shù)遞歸調(diào)用時,系統(tǒng)要在棧中不斷保存函數(shù)調(diào)用時的現(xiàn)場和產(chǎn)生的變量,如果遞歸調(diào)用太深,就會造成棧溢出,這時遞歸無法返回。再有,當(dāng)函數(shù)調(diào)用層次過深時也可能導(dǎo)致棧無法容納這些調(diào)用的返回地址而造成棧溢出。
- 無限循環(huán)。
- 大量局部變量分配。
3.Stack棧和Queue隊(duì)列
????相同點(diǎn):
- 都是線性結(jié)構(gòu)。
- 插入操作都是限定在表尾進(jìn)行。
- 都可以通過順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)。
- 插入與刪除的時間復(fù)雜度都是O(1),在空間復(fù)雜度上兩者也一樣。
- 多鏈棧和多鏈隊(duì)列的管理模式可以相同。
- 底層都是由泛型數(shù)組實(shí)現(xiàn)。
????不同點(diǎn):
- 棧先進(jìn)后出,隊(duì)列先進(jìn)先出:刪除數(shù)據(jù)元素的位置不同,棧的刪除操作在表尾進(jìn)行,隊(duì)列的刪除操作在表頭進(jìn)行。
- 順序棧能夠?qū)崿F(xiàn)多棧空間共享,而順序隊(duì)列不能。
- 應(yīng)用場景不同
常見棧的應(yīng)用場景包括
- 括號問題的求解,
- 深度優(yōu)先搜索遍歷等;
- 函數(shù)調(diào)用和遞歸實(shí)現(xiàn),
- 表達(dá)式的轉(zhuǎn)換和求值
常見的隊(duì)列的應(yīng)用場景包括
- 計(jì)算機(jī)系統(tǒng)中各種資源的管理,
- 消息緩沖器的管理
- 廣度優(yōu)先搜索遍歷等
4.鏈表
????????單雙向鏈表的區(qū)別:
????????指向不同:單向鏈表只有一個指向下一結(jié)點(diǎn)的指針,雙向鏈表除了有一個指向下一結(jié)點(diǎn)的指針外,還有一個指向前一結(jié)點(diǎn)的指針。
????????功能不同:單向鏈表只能next ,雙向鏈表可以return。
????????單雙向不同:單鏈表只能單向讀取,雙向鏈表可以雙向遍歷。
????????單向鏈表優(yōu)缺點(diǎn):
?????????優(yōu)點(diǎn):單向鏈表增加刪除節(jié)點(diǎn)簡單。遍歷時候不會死循環(huán);
?????????缺點(diǎn):只能從頭到尾遍歷。只能找到后繼,無法找到前驅(qū),也就是只能前進(jìn)。
????????雙向鏈表優(yōu)缺點(diǎn):
????????優(yōu)點(diǎn):可以找到前驅(qū)和后繼,可進(jìn)可退;
????????缺點(diǎn):增加刪除節(jié)點(diǎn)復(fù)雜,多需要分配一個指針存儲空間。
????????
????????????????????????s->prior=p;?s->next=p->next;?p->next->prior=s;?p->next=s;
????????例題:遍歷一遍找到鏈表倒數(shù)第 k 個元素
????????由于單鏈表只能從頭到尾依次訪問鏈表的各個節(jié)點(diǎn),所以如果要找鏈表的倒數(shù)第 k 個元素,也只能從頭到尾遍歷查找。在查找過程中,設(shè)置兩個指針,讓其中一個指針比另一個指針先移動 k 步,然后兩個指針同時往前移動。循環(huán)到先行的指針值為 NULL 時,另一個指針?biāo)傅奈恢镁褪且业奈恢谩?/p>
5.鏈表與數(shù)組的對比
????????1.數(shù)組必須事先定義固定的長度(元素個數(shù)),不能適應(yīng)數(shù)據(jù)動態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時,可能超出原先定義的元素個數(shù);當(dāng)數(shù)據(jù)減少時,造成內(nèi)存浪費(fèi);數(shù)組可以根據(jù)下標(biāo)直接存取,時間復(fù)雜度O(1)。
????????2.鏈表動態(tài)地進(jìn)行存儲分配,可以適應(yīng)數(shù)據(jù)動態(tài)地增減的情況,且可以方便地插入、刪除數(shù)據(jù)項(xiàng)。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時,需要移動其它數(shù)據(jù)項(xiàng),非常繁瑣)鏈表必須根據(jù)next指針找到下一個元素。
????????從上面的比較可以看出,如果需要快速訪問數(shù)據(jù),很少或不插入和刪除元素,就應(yīng)該用數(shù)組;相反,如果需要經(jīng)常插入和刪除元素就需要用鏈表數(shù)據(jù)結(jié)構(gòu)了。
6.二叉樹
????????計(jì)算深度(高度)
????????二叉樹的高度是二叉樹結(jié)點(diǎn)層次的最大值,也就是其左右子樹的最大高度+1。當(dāng)樹為空時,高度為0;否則為其左右子樹最大高度+1。
????????遍歷:(看根節(jié)點(diǎn)的位置)
????????前序遍歷:(根左右)先訪問根節(jié)點(diǎn),再訪問左節(jié)點(diǎn),再訪問右節(jié)點(diǎn)。
????????中序遍歷,(左根右)先訪問左節(jié)點(diǎn),再訪問根節(jié)點(diǎn),再訪問右節(jié)點(diǎn)。
????????后序遍歷,(左右根)先訪問左節(jié)點(diǎn),再訪問右節(jié)點(diǎn),再訪問根節(jié)點(diǎn)。
? 這一點(diǎn)上沒有什么本質(zhì)上的優(yōu)缺點(diǎn),要看實(shí)際需求決定采用何種遍歷方式
采用遞歸方式和非遞歸方式。前者優(yōu)點(diǎn)是直觀,編寫起來簡單,缺點(diǎn)是但其開銷也比較大。非遞歸形式開銷小,但編寫復(fù)雜。
????????根據(jù)中序遍歷與后續(xù)遍歷求前序遍歷(還原樹)
????????詳細(xì)請看:
????????力扣
????????針對選擇題:
????????無腦秒解!已知先/后序遍歷與中序遍歷,求后/先序遍歷。_嗶哩嗶哩_bilibili
????????先序遍歷與中序遍歷 或者 后續(xù)遍歷與中序遍歷 ?可確定一條樹。
????原因:
????????先序和后序可以告訴我們根節(jié)點(diǎn),只不過先序遍歷的根節(jié)點(diǎn)從前往后,后序遍歷的根節(jié)點(diǎn)從后往前,也正是因?yàn)橄刃虮闅v和后序遍歷都只能告訴我們根節(jié)點(diǎn)這個信息,所以他們兩個在一起是沒辦法得到足夠信息去構(gòu)建二叉樹的。我們知道根節(jié)點(diǎn)之后,可以拿這個根節(jié)點(diǎn)在中序遍歷的數(shù)據(jù)中,以該節(jié)點(diǎn)為中心,節(jié)點(diǎn)左面為該節(jié)點(diǎn)的左子樹,節(jié)點(diǎn)右面為該節(jié)點(diǎn)的右子樹。很明顯上述的規(guī)律有遞歸的特性。
????????詳細(xì)請看:
哪兩種遍歷方式可以唯一確定一棵二叉樹,結(jié)合力扣105題_有裂痕的石頭的博客-CSDN博客_唯一確定二叉樹的遍歷方法
????????拓展小知識
????????????????完全二叉樹:
????????完全二叉樹是一種特殊的二叉樹,滿足以下要求:
????????1.所有葉子節(jié)點(diǎn)都出現(xiàn)在 k 或者 k-1 層,而且從 1 到 k-1 層必須達(dá)到最大節(jié)點(diǎn)數(shù);
????????2.第 k 層可以不是滿的,但是第 k 層的所有節(jié)點(diǎn)必須集中在最左邊。?需要注意的是不要把完全二叉樹和“滿二叉樹”搞混了,完全二叉樹不要求所有樹都有左右子樹,但它要求:
????????任何一個節(jié)點(diǎn)不能只有右子樹沒有左子樹
????????葉子節(jié)點(diǎn)出現(xiàn)在最后一層或者倒數(shù)第二層,不能再往上。
????????用一張圖對比下“完全二叉樹”和“滿二叉樹”:
????????????????
????????????????????????
?????????????????平衡二叉樹:
????????平衡二叉樹的提出就是為了保證樹不至于太傾斜,盡量保證兩邊平衡。因此它的定義如下:
????????1.平衡二叉樹要么是一棵空樹
????????2.要么保證左右子樹的高度之差不大于 1
????????3.子樹也必須是一顆平衡二叉樹
????????????????節(jié)點(diǎn)
????????根節(jié)點(diǎn):樹的最頂端的節(jié)點(diǎn)。(根節(jié)點(diǎn)只有一個)
????????子節(jié)點(diǎn):除根節(jié)點(diǎn)之外,并且本身下面還連接有節(jié)點(diǎn)的節(jié)點(diǎn)。
????????葉子節(jié)點(diǎn):自己下面不再連接有節(jié)點(diǎn)的節(jié)點(diǎn)(即末端),稱為葉子節(jié) 點(diǎn)(又稱為終端結(jié)點(diǎn))度為0。
????????????????經(jīng)典例題:
? ? ? ? 1.在完全二叉樹中,節(jié)點(diǎn)數(shù)為n,葉子節(jié)點(diǎn)數(shù)為m。兩者關(guān)系為 ?n = m*2-1;m =(n+1)/2。
? ? ? ? 2.一棵樹度為4,其中度為1,2,3,4的結(jié)點(diǎn)個數(shù)分別為4,2,1,1,則這棵樹的葉子節(jié)點(diǎn)個數(shù)為多少?
????????解:因?yàn)槿我豢脴渲?,結(jié)點(diǎn)總數(shù) = 度數(shù)*該度數(shù)對應(yīng)的結(jié)點(diǎn)數(shù) + 1,所以:
????????總結(jié)點(diǎn)數(shù) = 1 * 4+2 * 2+3 * 1+4 * 1 + 1=16
????????葉子結(jié)點(diǎn)數(shù)=16-4-2-1-1(總節(jié)點(diǎn)數(shù)-度不為0的個數(shù))=8
????????則:葉子結(jié)點(diǎn)=8
7.List底層實(shí)現(xiàn)
????????插入,擴(kuò)容,刪除,收縮。
????????底層的變化:實(shí)際是一個動態(tài)擴(kuò)容的泛型數(shù)組,插入的時候:若容量不夠,內(nèi)存擴(kuò)兩倍(不是Count,容量默認(rèn)值為4:4--8--16...),原數(shù)組內(nèi)容copy新數(shù)組里,舊數(shù)組回收。
????????直接定義預(yù)估大小,避免頻繁擴(kuò)容,產(chǎn)生GC;
????????排序:快排(分治思想) nlongn
????????詳細(xì)請看:【C#】淺析C# List實(shí)現(xiàn)原理 - 知乎
8.字典
? ? ? ? 1.介紹
- Dictionary表示鍵和值的集合。
- Dictionary<object, object>是一個泛型。
- 他本身有集合的功能有時候可以把它看成數(shù)組。
- 他的結(jié)構(gòu)是這樣的:Dictionary<[key], [value]>。
- 他的特點(diǎn)是存入對象是需要與[key]值一一對應(yīng)的存入該泛型,任何鍵都是唯一。
- 通過某一個一定的[key]去找到對應(yīng)的值。查找元素的時間復(fù)雜度為O(1)。
???????
???????增刪查改時間復(fù)雜度
????????Dictionary字典類是hash表,Add操作是O(1)。
????????其Containskey方法是O(1),原因是通過hash來查找元素而不是遍歷元素。
????????ContainsValue方法的時間復(fù)雜度是O(N),原因是內(nèi)部通過遍歷key來查找value,而不是通過hash來查找。
????????ltem[Key]屬性根據(jù)key來檢索value,其時間復(fù)雜度也是O(1)。
????????基本都是O(1)
? ? ? ? 2.底層實(shí)現(xiàn)原理
????????Dictionary在構(gòu)造的時候做了以下幾件事:
????????1.初始化一個桶數(shù)組this.buckets = new int[prime]
????????2.初始化一個this.entries = new Entry<TKey, TValue>[prime]
????????Bucket和entries的容量都為大于字典容量的一個最小的質(zhì)數(shù)
????????其中this.buckets主要用來進(jìn)行Hash碰撞
????????this.entries用來存儲字典的內(nèi)容,并且標(biāo)識下一個元素的位置。
????????詳細(xì)過程
????????1.哈希表法:將不定長的二進(jìn)制數(shù)據(jù)集映射到一個較短的二進(jìn)制數(shù)據(jù)集,一個Key通過HashFunc得到HashCode。
????????2.Hash桶算法:對HashCode進(jìn)行分段顯示,常用方法對HashCode直接取余。
????????3.拉鏈法:分段則會導(dǎo)致key對應(yīng)的哈希桶相同,拉鏈法的基本思想就像對沖突的元素,建立一個單鏈表,頭指針存儲在對應(yīng)哈希桶的位置。反之就是通過hash桶對應(yīng)后,遍歷單鏈表,獲取value值。
????????詳細(xì)請看:帶你看懂Dictionary的內(nèi)部實(shí)現(xiàn) - 獨(dú)上高樓 - 博客園
? ? ? ? 3.提高性能
????????哈希沖突的發(fā)生,往往會降低字典和集合的操作速度。因此,為了保證高效性,字典和集合的哈希表,通常會保證其至少留有1/3的剩余空間。隨著元素的不斷插入,當(dāng)剩余空間小于1/3時,會重新獲取更大的內(nèi)存空間,擴(kuò)充哈希表。不過,這種情況表中所有的元素位置都會被重新排放,會導(dǎo)致速度緩慢,但是發(fā)生情況較少。
????????TryGetValue與Contains如何取舍
????????因?yàn)楫?dāng)Dictionary的value是復(fù)雜對象的時候,TryGetValue會將value轉(zhuǎn)換為Object在轉(zhuǎn)換為對應(yīng)的類型,這個裝箱拆箱的過程對復(fù)雜對象耗時很高。
????????當(dāng)字典的value是復(fù)雜對象的時候,建議大家不要使用TryGetValue。
? ? ? ? ?4.擴(kuò)容
?????????Dictionary 的內(nèi)部構(gòu)造和運(yùn)作機(jī)制。他是由數(shù)組構(gòu)成,并且由哈希函數(shù)完成地址構(gòu)建,由拉鏈法沖突解決方式來解決沖突。new 時盡量確定大致數(shù)量會更加高效。
????????從內(nèi)存操作上看,大小以3->7->17->37->….的速度,每次增加到2倍原容量的最小質(zhì)數(shù)的容量,刪除時,并不縮減內(nèi)存。
????????詳細(xì)地址:
https://blog.csdn.net/qq_41044598/article/details/126067510?ops_request_misc=&request_id=&biz_id=102&utm_term=字典如何擴(kuò)容&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-3-126067510.nonecase&spm=1018.2226.3001.4450
????????
? ? ? ? 常見的哈希算法:
? ? ? ? Hash桶算法:首先將key通過hash函數(shù)生成hashcode,然后與hash桶的數(shù)量進(jìn)行取余,結(jié)果用于確定將該值存放在哪個桶。
? ? ? ? 平方取中法:取keyword平方后的中間幾位作為散列地址。
? ? ? ? 隨機(jī)數(shù)法:選擇—隨機(jī)函數(shù),取keyword的隨機(jī)值作為散列地址,通經(jīng)常使用于keyword長度。
? ? ? ? 解決hash碰撞:
? ? ? ? 拉鏈法(開散列):發(fā)生哈希沖突的位置,生成—個鏈表,用來存儲hash沖突的元素。
????????開放定址法(閉散列):發(fā)生哈希沖突位置開始,依次向后探測,直到找到下一個空位置為止。
? ? ? ? 再哈希法。
? ? ? ? 5.現(xiàn)在Dictionary容量是4個元素,現(xiàn)在要插入1個新的元素進(jìn)去,此時底層會發(fā)生什么?
????????1.容量擴(kuò)容。
????????2.拷貝+ GC。
????????3. hash找buckets索引。
????????4.將新數(shù)據(jù)掛在該buckets索引處的單鏈表中。
????????6.為什么Dictionary 查找效率是O(1)
????????通過元素的key值進(jìn)行取余操作,找的對應(yīng)的哈希桶,判定哈希桶對應(yīng)的哈希表的頭節(jié)點(diǎn)是不是該元素,若不是進(jìn)行next操作,對哈希表進(jìn)行遍歷,這兩個過程都是常數(shù)級別的操作。所以是O(1)。
????????7 hash沖突解決(開放定址法、再哈希法、拉鏈法)
????????散列表的裝填因子定義為:α= 填入表中的元素個數(shù)?/ 散列表的長度。
????????哈希表的長度一般是定長的,在存儲數(shù)據(jù)之前我們應(yīng)該知道我們存儲的數(shù)據(jù)規(guī)模是多大,應(yīng)該盡可能地避免頻繁地讓哈希表擴(kuò)容。但是如果設(shè)計(jì)的太大,那么就會浪費(fèi)空間,因?yàn)槲覀兏挥貌坏侥敲创蟮目臻g來存儲我們當(dāng)前的數(shù)據(jù)規(guī)模;如果設(shè)計(jì)的太小,那么就會很容易發(fā)生哈希沖突,體現(xiàn)不出哈希表的效率。所以,我們設(shè)計(jì)的哈希表的大小,必須要做到盡可能地減小哈希沖突,并且也要盡可能地不浪費(fèi)空間,選擇合適的哈希表的大小是提升哈希表性能的關(guān)鍵。
????????一個數(shù)除以一個素?cái)?shù)的時候,會產(chǎn)生最分散的余數(shù)。由于我們通常使用表的大小對哈希函數(shù)的結(jié)果進(jìn)行模運(yùn)算,如果表的大小是一個素?cái)?shù),那么這樣我們就會盡可能地產(chǎn)生分散的哈希值。
????????拉鏈法與開放地址法相比的缺點(diǎn):
????????拉鏈法的優(yōu)點(diǎn)
????????與開放定址法相比,拉鏈法有如下幾個優(yōu)點(diǎn):
????????①拉鏈法處理沖突簡單,且無堆積現(xiàn)象,即非同義詞決不會發(fā)生沖突,因此平均查找長度較短;
????????②由于拉鏈法中各鏈表上的結(jié)點(diǎn)空間是動態(tài)申請的,故它更適合于造表前無法確定表長的情況;
????????③開放定址法為減少沖突,要求裝填因子α較小,故當(dāng)結(jié)點(diǎn)規(guī)模較大時會浪費(fèi)很多空間。而拉鏈法中可取α≥1,且結(jié)點(diǎn)較大時,拉鏈法中增加的指針域可忽略不計(jì),因此節(jié)省空間;
????????④在用拉鏈法構(gòu)造的散列表中,刪除結(jié)點(diǎn)的操作易于實(shí)現(xiàn)。只要簡單地刪去鏈表上相應(yīng)的結(jié)點(diǎn)即可。而對開放地址法構(gòu)造的散列表,刪除結(jié)點(diǎn)不能簡單地將被刪結(jié) 點(diǎn)的空間置為空,否則將截?cái)嘣谒筇钊肷⒘斜淼耐x詞結(jié)點(diǎn)的查找路徑。這是因?yàn)楦鞣N開放地址法中,空地址單元(即開放地址)都是查找失敗的條件。因此在 用開放地址法處理沖突的散列表上執(zhí)行刪除操作,只能在被刪結(jié)點(diǎn)上做刪除標(biāo)記,而不能真正刪除結(jié)點(diǎn)。
????????拉鏈法的缺點(diǎn)
????????拉鏈法的缺點(diǎn)是:指針需要額外的空間,故當(dāng)結(jié)點(diǎn)規(guī)模較小時,開放定址法較為節(jié)省空間,而若將節(jié)省的指針空間用來擴(kuò)大散列表的規(guī)模,可使裝填因子變小,這又減少了開放定址法中的沖突,從而提高平均查找速度。
????????詳細(xì)請看:數(shù)據(jù)結(jié)構(gòu)與算法:hash沖突解決 - 知乎
散列沖突處理:鏈地址法與開放地址法_a092cc的博客-CSDN博客_開放定址法和鏈地址法的平均查找長度
數(shù)據(jù)結(jié)構(gòu)與算法 — 認(rèn)識哈希表、地址的沖突、鏈地址法、開放地址法、哈?;男蔩吃不到棒棒糖的小熊的博客-CSDN博客_開放地址法 鏈地址法
9. 關(guān)于List與字典的遍歷與查詢效率
????????List的底層,是一個泛型數(shù)組,連續(xù)且緊密的順序存儲,一般數(shù)據(jù)存儲在緩存中。而字典是離散(散列)分布,由數(shù)組和哈希表共同組成,遍歷的時候,會伴有換頁的操作,且數(shù)組都存儲在內(nèi)存中。而讀寫速度是:緩存>內(nèi)存>硬盤。因此List更適合遍歷。
????????字典的查詢效率是通過元素的key值進(jìn)行取余操作,找的對應(yīng)的哈希桶,判定哈希桶對應(yīng)的哈希表的頭節(jié)點(diǎn)是不是該元素,若不是進(jìn)行next操作,對哈希表進(jìn)行遍歷,這兩個過程都是常數(shù)級別的操作。所以是O(1)。而List的查詢效率是先遍歷,找到對應(yīng)的值,因此是O(n)。所以字典更適合查詢。
????????希望此篇文章可以幫助到更多的同學(xué),此外對現(xiàn)在面臨校招的大三大四的同學(xué),以及熱愛游戲或者即將面臨找工作的朋友,可以點(diǎn)擊下方鏈接,來解決游戲職業(yè)道路的種種困惑,并且還可以學(xué)習(xí)理論知識的同時,拓寬游戲制作的實(shí)踐技能~文章來源:http://www.zghlxwxcb.cn/news/detail-739314.html
游戲行業(yè)大揭秘https://scrm.vipskill.com/CMS/prod/5726/54/home.html?mantisSiteId=175&track_id=__TRACKID__文章來源地址http://www.zghlxwxcb.cn/news/detail-739314.html
到了這里,關(guān)于Unity游戲開發(fā)客戶端面經(jīng)——數(shù)據(jù)結(jié)構(gòu)(初級)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!