2023計算機(jī)考研初試在即,在最后階段建議各位同學(xué)將知識點再系統(tǒng)復(fù)習(xí)一遍,以免有所遺漏!2022計算機(jī)考研數(shù)據(jù)結(jié)構(gòu)第二單元知識點包含順序表、單向鏈表、單向循環(huán)鏈表、雙向循環(huán)鏈表。高頓考研為大家整理了2022計算機(jī)考研數(shù)據(jù)結(jié)構(gòu)第二單元知識點的詳細(xì)內(nèi)容,供大家參考復(fù)習(xí)!
順序表:順序存儲表示的線性表稱為順序表
地址計算公式:loc(ai)=loc(a0)+i*k
只要給定loc(a0)和k,就可以確定線性表中任意一個元素的存儲地址。
順序表是一種隨機(jī)存取結(jié)構(gòu)。
相關(guān)運(yùn)算:
Find(i,x):查找下標(biāo)為i的元素a<i>。在x中返回表中下標(biāo)為i的元素a<i>(即表中第i+1個元素)。如果不存在,則返回false,否則返回true。
Insert(i,x):在表中下標(biāo)為i的元素ai后插入x。若i=-1,則將新元素x插在最前面。若插入成功,返回true。
Delete(i):刪除元素a<i>。
優(yōu)點:隨機(jī)存取;存儲空間利用率高。
缺點:插入、刪除效率低;必須按事先估計的最大元素個數(shù)分配連續(xù)的存儲空間,難以臨時擴(kuò)大。
單向鏈表
·表頭指針first是指向鏈表的頭結(jié)點的指針
相關(guān)運(yùn)算:
Find(i,x):必須從表頭指針開始沿鏈逐個計數(shù)查找,稱為順序查找。搜索運(yùn)算的平均、最壞的漸近時間復(fù)雜度都是O(n)。
Insert(i,x):生成數(shù)據(jù)域為x的新結(jié)點,q指向新結(jié)點;從first開始找第i+1個結(jié)點,p指向該結(jié)點;將q插入p之后,表長加1。
·注意區(qū)分插在頭結(jié)點和一般節(jié)點的情況
Delete(i):從first開始找第i+1個結(jié)點,p指向該結(jié)點,q指向p之前驅(qū)結(jié)點;從單鏈表中刪除p;放p之空間(delete p);表長減1。
優(yōu)點:單鏈表插入和刪除只需修改一兩個指針,無需移動元素??梢詣討B(tài)分配結(jié)點空間,線性表的長度只受內(nèi)存大小限制。
缺點:查找運(yùn)算費時,只能順序查找,不能隨機(jī)查找。
帶表頭結(jié)點的單向鏈表
注意區(qū)分“表頭結(jié)點”和“頭結(jié)點”。
頭結(jié)點:線性表中下標(biāo)為0的元素、第1個元素;
表頭結(jié)點:為簡化算法而附加的結(jié)點,不是線性表中的元素。
·在算法中無需將頭結(jié)點和一般節(jié)點的情況分開討論。
單向循環(huán)鏈表
循環(huán)鏈表是另一種形式的鏈?zhǔn)酱鎯Y(jié)構(gòu)。它的特點是表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成一個環(huán)。
雙向循環(huán)鏈表
雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數(shù)據(jù)結(jié)點中都有兩個指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個結(jié)點開始,都可以很方便地訪問它的前驅(qū)結(jié)點和后繼結(jié)點。一般我們都構(gòu)造雙向循環(huán)鏈表。