線性表 鍊錶

2021-08-15 06:25:00 字數 1658 閱讀 1192

1.陣列長度和線性表長度區別?

答:陣列的長度是存放線性表的儲存空間的長度,儲存分配後這個量是一般是不變的。有個別同學可能會問,陣列的大小一定不可以變嗎? 我怎麼看到有書中談到可以動態分配的一維陣列。是的,一般高階語言,比如c.vb、c++都可↓人用程式設計手段實現動態分配陣列,不過這會帶來效能上的損耗。線性表的長度是線性表中資料元素的個數,隨著線性表插入和刪除操作的進行,這個量是變化的。在任意時刻,線性表的長度應該小於等於陣列的長度。

2.線性表順序儲存結構的優缺點?

答:優點,無需為表示,表中元素之間的邏輯關係而增加額外的儲存空間。可以快速的訪問表中任意位置的元素。

缺點,插入和刪除操作需要移動大量元素,當線性表長度變化較大時難以確定,儲存空間的容量造成儲存空間的碎片。

3.頭指標與頭結點的區別?

答:頭指標是指鍊錶指向第乙個節點的指標,若煉表有頭結點,則是指向頭結點的指標指標具有標識作用,所以,常用頭指標冠以鍊錶的名字,無論鍊錶是否為空,指標均不為空指標鍊錶的必要元素。

頭點頭節點是為了操作的統一和方便而設立的,放在第一元素結點之前,其資料域一般無意義,有了頭結點,對第一元素結點插入結點和刪除第一結點,操作與其他節點的操作就統一了,頭節點不一定是列表的必要元素 。

4.單鏈表第i個資料插入結點的演算法思路:

答:1.宣告一指標p 指向煉表頭結點,初始化j 從1開始;

2.當jidata;

6.單鏈表的插人標準語句s->next=p->next

p > n ext= s;

7.返回成功。 

5.單鏈表的第i個資料刪除結點的演算法思路:

1.宣告以指標p指向煉表頭指標;

2.當jnext 賦值給q ;

5.單鏈表的刪除標準語句p->next=q->next ;

6.將q 結點中的資料賦值給e,作為返回;

7.釋放q 結點;

8.返回成功。

6.單鏈表整表建立的演算法思路:

答:1.宣告一指標p和計數器變數i;

2.初始化一空鍊錶l;

3.讓l 的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表;

4.迴圈:

生成一新結點賦值給p;

隨機生成一數字賦值給p 的資料城p->data;

將p 插入到頭結點與前一新結點之間。

7.單鏈表整表刪除的演算法思路如下:

1.宣告一結點p 和q;

2.將第乙個結點賦值給p ;

3.迴圈:

將下一結點賦值給q;

釋放p;

將q 賦值給p。

8.雙鏈表的插入:

答:s - >prior = p;    /*把p賦值給s的前展,如圖中0*/

s-> next = p -> next;   /*把p->next 賦值給目的後繼,如圖中2*/

p -> next-> prior = s;   /*把8 賦值給p->next 的前驅,如團中3*/

p -> next = s;     /*把日賦值給p 的後繼,如圖中4*/

9.雙向鍊錶的刪除:

答:p->prior->next-p->next; /*把p->next 賦值給p->prior 的後繼,如圖中0*/

p->next->prior=-p->prior;  /*把p->prior 賦值給p->next 的前驅,如圖中2*/

free(p);    /*釋放結點*/

線性表 鍊錶

線性表的adt list.h 線性表的c 抽象類宣告 templateclass list 單鏈表節點的定義 link.h 單鏈表節點類的定義 template class link link link nextval null 鍊錶的實現宣告 成員函式的是實現 鍊錶的實現宣告 include st...

線性表 鍊錶

include include typedef int elemtype typedef struct node lnode,linklist linklist createlinklist1 頭插法 linklist createlinklist2 尾插法 void lengthlinklist ...

線性表,鍊錶

資料的儲存結構分為鏈式儲存結構,線性儲存結構。不管什麼型別的資料結構,都會以這兩種儲存方式在計算機中儲存。線性儲存結構就是開闢一段連續的記憶體 記憶體大小已經確定 將資料儲存在這段連續記憶體中,這種儲存結構的優點是可以快速地取出元素,時間複雜度為o 1 缺點是插入和刪除需要移動大量的元素,時間複雜度...