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