考研數(shù)據(jù)結(jié)構(gòu)匯總_第1頁(yè)
考研數(shù)據(jù)結(jié)構(gòu)匯總_第2頁(yè)
考研數(shù)據(jù)結(jié)構(gòu)匯總_第3頁(yè)
考研數(shù)據(jù)結(jié)構(gòu)匯總_第4頁(yè)
考研數(shù)據(jù)結(jié)構(gòu)匯總_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

考研數(shù)據(jù)結(jié)構(gòu)匯總僅供參考必背知識(shí)點(diǎn)數(shù)據(jù)結(jié)構(gòu)是相互之間存在?種或多種特定關(guān)系的數(shù)據(jù)元素的集合數(shù)據(jù)結(jié)構(gòu)的三要素:邏輯結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)的運(yùn)算(定義(邏輯結(jié)構(gòu)的,運(yùn)算的功能)和實(shí)現(xiàn)(物理結(jié)構(gòu)的,運(yùn)算的具體操作步驟))邏輯結(jié)構(gòu):數(shù)據(jù)元素之間的邏輯關(guān)系,與數(shù)據(jù)的存儲(chǔ)?關(guān),獨(dú)?于計(jì)算機(jī),線性結(jié)構(gòu)和?線性結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu):數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表?順序存儲(chǔ):邏輯上相鄰,物理上也相鄰鏈?zhǔn)酱鎯?chǔ):邏輯上相鄰,物理上可以不相鄰索引表:在存儲(chǔ)信息時(shí),還需要建?附加的索引表哈希表:根據(jù)關(guān)鍵字,直接計(jì)算出該元素的存儲(chǔ)地址。算法:對(duì)特定問(wèn)題求解步驟的?種描述基本特性:有確可叔叔有窮性:算法在有窮步之后結(jié)束,并且每?步都在有窮時(shí)間內(nèi)完成確定性:算法中每條指令都是有確定含義的,對(duì)于同?輸?,有同?輸出可?性:算法中描述的操作可以根據(jù)現(xiàn)有實(shí)現(xiàn)的基本運(yùn)算執(zhí)?有限次后完成輸?:?個(gè)或多個(gè)輸?輸出:?個(gè)或多個(gè)輸出,這些輸出和輸?有著某種關(guān)系好的算法:正可健效正確性:算法能正確的求解問(wèn)題可讀性:算法應(yīng)該有良好的可讀性健壯性:輸??法數(shù)據(jù)是,可以對(duì)這些錯(cuò)誤操作進(jìn)?處理效率和低存儲(chǔ)需求:執(zhí)?時(shí)間和所需最?空間內(nèi)存時(shí)間復(fù)雜度:?個(gè)算法所需花費(fèi)的時(shí)間,和問(wèn)題規(guī)模n有關(guān)空間復(fù)雜度:?個(gè)算法在運(yùn)?過(guò)程中臨時(shí)占?存儲(chǔ)空間的??線性表:由n個(gè)相同數(shù)據(jù)類型的數(shù)據(jù)元素的構(gòu)成的有序序列,邏輯關(guān)系,表??對(duì)?的相鄰關(guān)系相關(guān)操作:求表長(zhǎng),定位元素位置下標(biāo),初始化表,表得插?,表得刪除,輸出表,判斷表是否為空順序表:線性表的順序存儲(chǔ),他是??組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的數(shù)據(jù)元素,從?使得在邏輯上相鄰,物理上也相鄰。?持隨機(jī)訪問(wèn),存儲(chǔ)密度?,創(chuàng)建數(shù)組成功后不可再次更改數(shù)組??,插?和刪除需要移動(dòng)?量數(shù)組元素。單鏈表:線性表的鏈?zhǔn)酱鎯?chǔ),?組任意的存儲(chǔ)單元來(lái)存儲(chǔ)線性表中的數(shù)據(jù)元素。插?和刪除的效率較?,沒(méi)有元素個(gè)數(shù)的限制,不?持隨機(jī)存儲(chǔ)雙鏈表:兩個(gè)指針域,,?個(gè)指針域指向其前驅(qū),?個(gè)指向其后繼節(jié)點(diǎn)循環(huán)鏈表:尾結(jié)點(diǎn)指向其頭結(jié)點(diǎn)

棧只允許在?段進(jìn)?插?和刪除的線性表,進(jìn)?插?和刪除的?端稱棧頂,不進(jìn)?插?和刪除的?段稱為棧底。后進(jìn)先出棧的基本操作包含:?棧,出棧,判斷棧是否為空,是否已滿,棧的初始化等棧的實(shí)現(xiàn):順序棧:順序表的實(shí)現(xiàn),存在溢出的風(fēng)險(xiǎn),鏈棧:使?鏈表實(shí)現(xiàn),不存在溢出的情況隊(duì)列是限制操作的線性表,只能在?段刪除,?端插?,先進(jìn)先出基本操作:?隊(duì),出隊(duì),判斷隊(duì)滿,對(duì)空,初始化等隊(duì)列的實(shí)現(xiàn):循環(huán)隊(duì)列:使?順序表實(shí)現(xiàn),利?取模的?式,從邏輯上看是?個(gè)環(huán)形鏈隊(duì):使?鏈表實(shí)現(xiàn),?兩個(gè)指針標(biāo)記隊(duì)列的頭部和尾部,優(yōu)點(diǎn)是不會(huì)存在隊(duì)列慢的情況判斷隊(duì)滿:犧牲?個(gè)元素空間,利??個(gè)標(biāo)記位數(shù)組由n個(gè)相同數(shù)據(jù)類型的數(shù)據(jù)元素構(gòu)成的有序序列,是線性表的推?,?維數(shù)組可以看做線性表,?維數(shù)組可以將其元素看成定長(zhǎng)線性表,下標(biāo)的取值范圍稱為維界。?義表:由0個(gè)或者多個(gè),元素或?表組成的有序序列,線性表的推?兩個(gè)基本操作:取表頭:?義表中的第?個(gè)元素取表尾:取出?義表中除第?個(gè)元素以外的其他元素串是由零個(gè)或多個(gè)字符組成的有限序列串的實(shí)現(xiàn):順序存儲(chǔ):??組連續(xù)的存儲(chǔ)空間依次存儲(chǔ)串中的元素,刪除和插?需要移動(dòng)?量的元素鏈?zhǔn)酱鎯?chǔ):??組?連續(xù)的存儲(chǔ)空間存儲(chǔ)串中的元素,不需要移動(dòng)?量元素串的基本操作:串的復(fù)制,求串長(zhǎng),求?串,串聯(lián)接,串的銷毀哈希表:根據(jù)關(guān)鍵碼值?直接進(jìn)?訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)樹(shù)樹(shù)是n個(gè)結(jié)點(diǎn)的有限集,它或?yàn)榭諛?shù);或?yàn)?空樹(shù),對(duì)于?空樹(shù)T:(1)有且僅有?個(gè)稱之為根的結(jié)點(diǎn);(2)除根結(jié)點(diǎn)以外的其余結(jié)點(diǎn)可分為m個(gè)互不相交的有限集Ti,T2,…,?,其中每?個(gè)集合本??是?棵樹(shù),并且稱為根的?樹(shù)性質(zhì)樹(shù)中?個(gè)結(jié)點(diǎn)的孩?個(gè)數(shù)稱為該結(jié)點(diǎn)的度。1.樹(shù)中結(jié)點(diǎn)n的個(gè)數(shù):n=n0+n1+n2+…+1?叉樹(shù)是n個(gè)結(jié)點(diǎn)所構(gòu)成的集合,它或?yàn)榭諛?shù)(n=0);或?yàn)?空樹(shù),對(duì)于?空樹(shù)T:(1)有且僅有?個(gè)稱之為根的結(jié)點(diǎn);(2)除根結(jié)點(diǎn)以外的其余結(jié)點(diǎn)分為兩個(gè)互不相交的?集T1和T2,分別稱為T的左?樹(shù)和右?樹(shù)且T1和T2本??都是?叉樹(shù)滿?叉樹(shù):深度為K且含有2^k-1個(gè)結(jié)點(diǎn)的?叉樹(shù)完全?叉樹(shù):深度為K的,有n個(gè)結(jié)點(diǎn)的?叉樹(shù),當(dāng)且僅當(dāng)其每?個(gè)結(jié)點(diǎn)都與深度為K的滿?叉樹(shù)中編號(hào)從1?n的結(jié)點(diǎn)??對(duì)應(yīng)時(shí),稱之為完全?叉樹(shù)由先序,中序和后序,中序遍歷可以得到唯??個(gè)?叉樹(shù)?叉樹(shù)的遍歷:按照某條搜索路徑訪問(wèn)樹(shù)中每個(gè)節(jié)點(diǎn),使得每個(gè)節(jié)點(diǎn)都被訪問(wèn)依次且僅被訪問(wèn)?次?叉排序樹(shù):根節(jié)點(diǎn)的左邊元素均?于根節(jié)點(diǎn),右邊均?于根節(jié)點(diǎn),其左右孩?也滿?這?條件性質(zhì)1.對(duì)任何?棵?叉樹(shù)T,如果其終端結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2,則n0=n2+12.?空?叉樹(shù)上第K層?多有2^(k-1)個(gè)結(jié)點(diǎn)3.?度/深度為h的?叉樹(shù)?多有2^h-1個(gè)結(jié)點(diǎn),?少2^(h-1)個(gè)結(jié)點(diǎn)4.5.具有n個(gè)結(jié)點(diǎn)的完全?叉樹(shù)的深度/?度6.n個(gè)結(jié)點(diǎn)的?叉樹(shù)采?鏈?zhǔn)酱鎯?chǔ),其中空指針為n+1平衡?叉樹(shù)的插?為了避免樹(shù)的?度增長(zhǎng)過(guò)快,影響?叉排序樹(shù)的性能,在?叉樹(shù)進(jìn)?插?和刪除時(shí),需要確保左?樹(shù)的?度減去右?樹(shù)的?度只差?于等于?LL:結(jié)點(diǎn)A左孩?的左結(jié)點(diǎn)上插?結(jié)點(diǎn)。todo:右旋,A左孩?的右?樹(shù)為A的左孩?RR:結(jié)點(diǎn)A右孩?的右結(jié)點(diǎn)上插?結(jié)點(diǎn)。todo:左旋,A右孩?的左孩?為A的右孩?LR:結(jié)點(diǎn)A左孩?的右孩?上插?結(jié)點(diǎn)。todo:先左旋轉(zhuǎn)后右旋轉(zhuǎn),插?點(diǎn)為C,C的左孩?為B,右孩?為A。C的左孩?放到調(diào)整后結(jié)點(diǎn)的左邊下,右孩?放到右邊。RL:結(jié)點(diǎn)A右孩?的左孩?上插?結(jié)點(diǎn)。todo:先右旋后左旋,插?點(diǎn)為C,C的左孩?為A,右孩?為B。C的左孩?放到調(diào)整后結(jié)點(diǎn)的左邊下,右孩?放到右邊。哈夫曼樹(shù)帶路徑長(zhǎng)度最?的?叉樹(shù)即為哈夫曼樹(shù)帶權(quán)路徑長(zhǎng)度:從樹(shù)的根到任意結(jié)點(diǎn)的經(jīng)過(guò)邊數(shù)與該結(jié)點(diǎn)上權(quán)值的乘積。樹(shù)中所有結(jié)點(diǎn)的帶權(quán)路徑長(zhǎng)度之和稱為該樹(shù)的帶權(quán)路徑長(zhǎng)度WPL。哈夫曼樹(shù)中不存在度為1的結(jié)點(diǎn)n個(gè)葉?結(jié)點(diǎn)的哈夫曼樹(shù)總結(jié)點(diǎn)數(shù)2n-1圖圖G由兩個(gè)集合V和E組成,記為G=(V,E),其中V是頂點(diǎn)的有窮?空集合,E是V中頂點(diǎn)偶對(duì)的有窮集合,這些頂點(diǎn)偶對(duì)稱為邊。V(G)和E(G)通常分別表?圖G的頂點(diǎn)集合和邊集合,E(G)可以為空集。若E(G)為空,則圖G只有頂點(diǎn)?沒(méi)有邊。對(duì)于圖G,若邊集E(G)為有向邊的集合,則稱該圖為有向圖;若邊集E(G)為?向邊的集合,則稱該圖為?向圖。完全圖:全圖中任意兩個(gè)頂點(diǎn)之間都存在邊,共n(n-1)/2條邊n個(gè)頂點(diǎn)的有向完全圖有n(n-1)條邊搜索性能分析鄰接表:o(v+e)鄰接矩陣:o(v^2)關(guān)鍵路徑源點(diǎn)到匯點(diǎn)的最長(zhǎng)路徑關(guān)鍵活動(dòng):邊上的權(quán)值增加,將導(dǎo)致關(guān)鍵路徑變化的活動(dòng)最早發(fā)?時(shí)間:v1-vk的最長(zhǎng)路徑長(zhǎng)度最遲發(fā)?時(shí)間:總時(shí)間-(vk-vj的路徑長(zhǎng)度)最早開(kāi)始時(shí)間:最早發(fā)?時(shí)間最晚開(kāi)始時(shí)間:總時(shí)間-(vk-vj的路徑長(zhǎng)度)-vk完成所需時(shí)間最短路徑:帶權(quán)路徑長(zhǎng)度最短的那條路徑拓?fù)湫蛄校河?個(gè)有向?環(huán)圖的頂點(diǎn)組成的序列滿?:?個(gè)頂點(diǎn)只出現(xiàn)?次頂點(diǎn)a在頂點(diǎn)b之前,則不存在由頂點(diǎn)b到頂點(diǎn)a的邊步驟:選擇?個(gè)沒(méi)有前驅(qū)的頂點(diǎn)輸出刪除改頂點(diǎn)和所有以它為起點(diǎn)的有向邊重復(fù)上述過(guò)程直?當(dāng)前?中不存在?前驅(qū)的頂點(diǎn)為?排序穩(wěn)定性名稱存儲(chǔ)?式空間時(shí)間直順序鏈?zhǔn)浇硬?將數(shù)組分為三部分,已排序區(qū),待排序元素,待排序區(qū),每?次將待排元素和已排序區(qū)的元素進(jìn)??較,待排元素放到穩(wěn)定1n2數(shù)組0的位置,如果?于之前的元素位置為i,已排序區(qū)整體后移?位,將待排元素插?,以此往復(fù)?較n-1次折半插?順序穩(wěn)定再插?排序的基礎(chǔ)上,增加了查找的效率,其他點(diǎn)不變1n2希爾排序不穩(wěn)定順序縮?增量排序,增量分組,每?個(gè)分組都是插?排序,每?次的增量為上?次增量的?半,?趟就是增量的?較次數(shù)––冒泡排序順序鏈?zhǔn)綄個(gè)元素和i-1個(gè)元素進(jìn)??較,如果發(fā)現(xiàn)i-1個(gè)元素?于第i個(gè)元素,則交換?者位置,每?趟排序都有?個(gè)元素再最終穩(wěn)定1n2位置上??焖倥判虿桓鶕?jù)?個(gè)樞紐,從后往前找出?于樞紐的值,放到low處,從前往后找出第?個(gè)?于樞紐的值,將第high處,以此往返直?low==high,將樞紐值放到low處,完成?趟排序順序lognnlog2n穩(wěn)定選擇排序順序鏈?zhǔn)讲粚?shù)組分為已排序區(qū)和待排序區(qū),每?趟都是從n-i+1個(gè)元素中選擇?個(gè)最?的元素和當(dāng)前第i個(gè)元素進(jìn)?互換,?趟確1n2穩(wěn)定定?個(gè)最終位置歸并排序順序穩(wěn)定將兩個(gè)或兩個(gè)以上的有序表組合成?個(gè)新的有序表nnlog2n堆不鏈?zhǔn)脚判驈?根堆或者?根堆中選擇根節(jié)點(diǎn)然后和末尾元素互換位置,將末尾位置輸出,最好對(duì)樹(shù)繼續(xù)調(diào)整1nlog2n穩(wěn)定數(shù)據(jù)壓縮1.對(duì)稱矩陣:存放數(shù)組??n(n+1)/21.下三?(含主對(duì)?線):i(i-1)/2+j-12.上三?:j(j-1)/2+i-12.稀疏矩陣:三元組ASL順序表成功:n+1/2失?。簄?叉樹(shù)成功:(每層結(jié)點(diǎn)數(shù)*?度)之和/總結(jié)點(diǎn)數(shù)失?。海沼嘟Y(jié)點(diǎn)數(shù)*空結(jié)點(diǎn)?節(jié)點(diǎn)?度)之和/總結(jié)點(diǎn)數(shù)+1散列表成功:探測(cè)次數(shù)之和/數(shù)據(jù)總數(shù)失?。?較次數(shù)(后續(xù)結(jié)點(diǎn)為空?較失?。┲?數(shù)據(jù)總數(shù)+1線索?叉樹(shù)若?左?樹(shù),則將左指針指向其前驅(qū)結(jié)點(diǎn);若?右?樹(shù),則將右指針指向其后繼結(jié)點(diǎn)。貪?算法:只尋求局部最優(yōu)解,不從整體出發(fā),得到的最終結(jié)果可能不是最優(yōu)解,從上往下,?步?步得到結(jié)果動(dòng)態(tài)規(guī)劃:將?個(gè)?問(wèn)題分為若?個(gè)?問(wèn)題,這些?問(wèn)題可能重復(fù),為防?記錄重復(fù),可以將它們記錄下來(lái),從下往上,且前?個(gè)?問(wèn)題對(duì)后?個(gè)?問(wèn)題必然產(chǎn)?影響,最終?步?步地到最優(yōu)解。分治法:將?個(gè)?問(wèn)題分成若?個(gè)?問(wèn)題,使?遞歸求解,?問(wèn)題之前相互獨(dú)?,?問(wèn)題最終的解的合集就為最優(yōu)解。查找:在數(shù)據(jù)集合中,找出滿?某種條件的數(shù)據(jù)元s素的過(guò)程。查找表:?于查找數(shù)據(jù)的集合關(guān)鍵字:數(shù)據(jù)元素中唯?標(biāo)識(shí)該數(shù)據(jù)項(xiàng)的值平均查找長(zhǎng)度:?次查找需要?較關(guān)鍵字的次數(shù)順序表#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstruct{int*arr;intmax,len;}Sqlist;voidInitList(Sqlist*list){intx,i;printf("inputmax:");scanf("%d",&x);list->arr=(int*)malloc(sizeof(int)*x);list->len=0;list->max=x;}intLength(Sqlistlist){returnlist.len;}intLocateElem(Sqlistlist,inte){intres=-1;for(inti=0;i<list.len;i++){if(e==list.arr[i]){{res=i+1;break;}}returnres;}intGetElem(Sqlistlist,inti){returnlist.arr[i-15];}boolListInsert(Sqlist*list,inti,inte){if(i<1||i>list->len+1||list->len==list->max){returnfalse;}for(intj=list->len;j>=i;j--){list->arr[j]=list->arr[j-1];}list->arr[i-1]=e;list->len++;returntrue;}boolListDelete(Sqlist*list,inti,int*e){if(i<1||i>list->len){returnfalse;}e=&list->arr[i-1];for(intj=i;j<list->len;j++){list->arr[j-1]=list->arr[j];}list->len--;returntrue;}voidPrintList(Sqlistlist){for(inti=0;i<list.len;i++){printf("%d",list.arr[i]);}putchar('\n');}boolEmpty(Sqlistlist){if(list.len==0){returntrue;}returnfalse;}voidDestoryList(Sqlist*list){free(list->arr);list->arr=NULL;list->len=0;list->max=0;}voidmain(){Sqlistlist;intx;intx;InitList(&list);for(inti=0;i<4;i++){list.arr[i]=i;}list.len=4;PrintList(list);printf("pos:%d\n",LocateElem(list,1));printf("ele:%d\n",GetElem(list,2));printf("len:%d\n",Length(list));ListInsert(&list,2,333);PrintList(list);ListDelete(&list,1,&x);PrintList(list);DestoryList(&list);}鏈表#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstructLNode{intData;structLNode*next;}LNode,*linkList;linkListHeadInsert(linkListlist){intx,i;LNode*s;printf("inputlen:");scanf("%d",&x);list=(LNode*)malloc(sizeof(LNode));list->next=NULL;for(i=0;i<x;i++){s=(LNode*)malloc(sizeof(LNode));s->Data=i+1;s->next=list->next;list->next=s;}returnlist;}linkListtailInsert(linkListlist){intx,i;LNode*s,*h;printf("inputlen:");scanf("%d",&x);h=list=(LNode*)malloc(sizeof(LNode));for(i=0;i<x;i++){s=(LNode*)malloc(sizeof(LNode));s->Data=i+1;s->next=NULL;list->next=s;list=s;}returnh;}}LNode*Getelem(linkListlist,inti){LNode*s;intj=1;list=list->next;while(list&&i>0){if(i==j){break;}j++;list=list->next;}returnlist;}LNode*LocateElem(linkListlist,inte){LNode*s=list->next;while(s){if(e==s->Data){break;}s=s->next;}returns;}voidprintNode(linkListlist){list=list->next;while(list){printf("%d",list->Data);list=list->next;}putchar('\n');}voidInsertNode(linkListlist,inti,inte){LNode*s,*p=Getelem(list,i-1);s->next=p->next;p->next=s;s->Data=e;}voiddeleteNode(linkListlist,inti){LNode*s,*p,*f;p=Getelem(list,i-1);f=p->next;p->next=f->next;free(f);}intlen(linkListlist){inti=0;list=list->next;while(list){i++;list=list->next;}returni;}}voidmain(){LNode*p,*s;p=HeadInsert(p);printNode(p);s=tailInsert(s);printNode(s);deleteNode(s,2);printNode(s);//InsertNode(p,1,4);//printNode(p);printf("%d",len(s));}順序棧#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#definemaxsize10typedefstruct{inttop;intlist[maxsize];}stack;stack*initStack(){stack*s=(stack*)malloc(sizeof(stack));s->top=-1;for(inti=0;i<maxsize;i++){s->list[i]=0;}returns;}boolenStack(stack*s,inte){if((s->top+1)==maxsize){returnfalse;}s->list[++(s->top)]=e;printf("e:%d\n",s->list[s->top]);returntrue;}boolpopStack(stack*s,int*x){if(s->top-1==-2){returnfalse;}*x=s->list[s->top--];printf("x:%d\n",*x);returntrue;}boolempty(stack*s){if(s->top==-1){returntrue;}returnfalse;}voidmain(){stack*s;intx;s=initStack();enStack(s,1);enStack(s,2);popStack(s,&x);popStack(s,&x);if(empty(s)){printf("true");}}鏈棧(帶頭結(jié)點(diǎn))#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstructnode{intdata;structnode*next;}stack;stack*initStack(){stack*s=(stack*)malloc(sizeof(stack));s->next=NULL;returns;}boolenStack(stack*s,inte){stack*node=(stack*)malloc(sizeof(stack));node->data=e;node->next=s->next;s->next=node;returntrue;}boolpopStack(stack*s,int*x){stack*p=s->next;s->next=p->next;printf("%d\n",p->data);free(p);returntrue;}boolempty(stack*s){if(s->next==NULL){returntrue;}returnfalse;}voidmain(){stack*s;intx;s=initStack();enStack(s,1);enStack(s,2);popStack(s,&x);popStack(s,&x);if(empty(s)){printf("true");}}隊(duì)列#include<stdio.h>//順序隊(duì)#include<stdlib.h>#include<stdbool.h>#definemaxsize10typedefstruct{intdata[maxsize];intfront,rear;}Squeue;Squeue*initQueue(){Squeue*s=(Squeue*)malloc(sizeof(Squeue));s->front=s->rear=0;returns;}boolempty(Squeue*s){if(s->front==s->rear){returntrue;}returnfalse;}boolenQueue(Squeue*s,inte){if(s->front==(s->rear+1)%maxsize){returnfalse;}s->data[s->rear]=e;printf("%d",s->data[s->rear]);s->rear=(s->rear+1)%maxsize;returntrue;}boolpopQueue(Squeue*s){if(empty(s)){returnfalse;}printf("%d",s->data[s->front]);s->front=(s->front+1)%maxsize;returntrue;}voidmain(){Squeue*s;intx;s=initQueue();for(inti=0;i<maxsize-2;i++){enQueue(s,i);}putchar('\n');if(enQueue(s,122)){printf("true");}}鏈隊(duì)#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#definemaxsize10typedefstructNode{intdata;structNode*next;}Node;typedefstruct{Node*front,*rear;}Squeue;Squeue*initQueue(Squeue*s){s->front=s->rear=(Node*)malloc(sizeof(Node));//頭結(jié)點(diǎn)s->front->next=NULL;returns;}boolempty(Squeue*s){if(s->front==s->rear){returntrue;}returnfalse;}voidenQueue(Squeue*s,inte){Node*q=(Node*)malloc(sizeof(Node));q->data=e;q->next=NULL;s->rear->next=q;s->rear=q;}boolpopQueue(Squeue*s,int*x){if(empty(s)){returnfalse;}Node*q=s->front->next;*x=q->data;s->front->next=q->next;if(q==s->rear){s->rear=s->front;}free(q);returntrue;}voidmain(){Squeue*s;intx;s=initQueue(s);for(inti=0;i<maxsize;i++){enQueue(s,i);}putchar('\n');popQueue(s,&x);printf("%d",x);popQueue(s,&x);printf("%d",x);popQueue(s,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論