1. 程式人生 > >順序表和連結串列的清空,銷燬,建構函式

順序表和連結串列的清空,銷燬,建構函式

一.建構函式

在定義物件時呼叫建構函式,建構函式是用來建立一個空表

1.順序表建構函式

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是否等於零來確定是否分配空間,除了建構函式以外,其他的基本操作都建立在了非空表的基礎上。在應用裡會用插入函式等等來構建非空表。

2.連結串列的建構函式

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) {delete p;} tail=head; len=0;

三.銷燬

都是隻留下了頭目的空間

1.順序表:detele elem[ ]:elem=NULL; 去除掉出頭目外所有的空間(就類似於建構函式時m==0的情況) 2. 連結串列:先清空表,再去掉頭結點;也就是隻剩下了頭目 (連結串列和順序表的銷燬都是隻剩下了頭目)