順序表和煉表的清空,銷毀,建構函式

2021-08-28 04:36:42 字數 1566 閱讀 7160

len,size,elem,這仨合起來看作是表的頭目,呼叫建構函式首先為這個「頭目」這仨資料分配空間,表的元素有沒有空間分配要看m的值。

↓主要是關於空間的分配問題↓

①建構函式是來建立乙個空表,令len=0,就說明沒有資料元素這就是乙個空表了。至於有沒有空間,也就是size是多少與空表沒有關係,所以m==0||m!=0都可以:

if(m==0)elem=null;

else elem=new elemtype[m]

②建構函式給順序錶類的資料元素分配儲存空間,所以len,size,elem都有了儲存空間,至於剩下的表的空間看m是否等於零來確定是否分配空間,除了建構函式以外,其他的基本操作都建立在了非空表的基礎上。在應用裡會用插入函式等等來構建非空表。

head,tail,len這仨是表的頭目,也是一樣的建構函式建立乙個空表,先給這仨分配儲存空間

①呼叫建構函式給len,head,tail,和頭結點分配空間

鍊錶有:頭指標,頭結點→【首元結點,尾節】←有了最後兩個就一定不是空表了,建立鍊錶的空表就只是建立乙個頭結點;new listnode

②head,tail,len 的值

要建立乙個空表首先len=0;head是頭指標指向頭結點,所以head=new listnode;至於tail,首先,必須要給它賦值,但是如果有了尾節點,就不是乙個空表了所以tail=head,讓它也指向頭結點;這樣最後乙個元素還是頭結點,就說明只有頭結點了,就是乙個空表

1.分配空間:

順序表:len,size,elem,分配空間,其他看m的大小決定是否分配空間。

鍊錶:len,head,tail,頭結點分配空間。

2.賦的值:

順序表:len=0(空表),size=m,→if(m==0)elem=null;eles elem=new elemtype[m]。

鍊錶:len=(空表),head=tail=listnode。

1相同點:

順序表和煉表的建構函式都是建立乙個空表,都是len=0

2.不同點:

①順序表:確定只有(這個有是指空間)」頭目」的空間,其他空間看m的大小決定

(並不是清除元素而是使其無法操作,因為沒有辦法清除元素)1→1/2

②鍊錶:確定有l頭目和頭結點的空間。

(也是讓其無法操作,但是這個可以清除元素就挨個清除了)1→1

3**實現:

順序表:len=0;elem=null(其實只要len=0就行了,elem是附帶的這樣更加讓其無法操作了)

鍊錶:while(p)

tail=head;

len=0;

1.順序表:detele elem[ ]:elem=null;

去除掉出頭目外所有的空間(就類似於建構函式時m==0的情況)

2. 鍊錶:先清空表,再去掉頭結點;也就是只剩下了頭目

(鍊錶和順序表的銷毀都是只剩下了頭目)

鍊錶銷毀與清空

銷毀 status destroylist linklist l return ok 清空 status clearlist linklist l 不改變l l next null 頭結點指標域為空 return ok 針對上面兩個函式有以下幾個問題 1 銷毀函式中頭指標的空間怎麼釋放的?2 鍊錶的...

鍊錶的銷毀與清空

鍊錶本身是乙個資料結構,清空是把鍊錶中的元素清空,但鍊錶還存在,銷毀則是把鍊錶這個結構的記憶體都釋放了。清空是鍊錶沒節點,但是鍊錶還在,可以繼續插入節點。銷毀就是鍊錶沒了,整個鍊錶的空間都被釋放了,不能進行任何操作了。就像乙個杯子,把杯子裡的水倒掉叫清空,把杯子砸碎叫銷毀。清空鍊錶與銷毀鍊錶的 如下...

順序表和煉表

定義 線性表是由n個具有相同特性的資料元素組成的有限序列,表中每個元素具有相同元素。邏輯上為連續的線性結構。常見的線性表 順序表,鍊錶 棧 佇列 字串 線性表根據物理儲存方式分為 順序表和煉表 線性表在邏輯上是線性結構,在物理上並不是連續的,線性表在物理上儲存時,通常是以陣列和鏈式結構的形式儲存。動...