資料結構單鏈表插入 整表刪除 整表建立

2021-07-25 19:04:58 字數 1148 閱讀 1354

0)單鏈表插入:

單鏈表插入的時間複雜度:

從頭查詢到插入點:o(n)

執行插入操作:o(1)

單鏈表刪除

status listdelete(linklist *l, int i, elemtype *e)

if( !(p->next) || j>i )

q = p->next;

p->next = q->next;

*e = q->data;

free(q);

return ok;

}單鏈表插入:

status listinsert(linklist *l, int i, elemtype e)

if( !p || j>i )

s = (linklist)malloc(sizeof(node));

s->data = e;

s->next = p->next;

p->next = s;

return ok;

}順序鍊錶:

找到插入點:o(1)

執行插入操作時元素依次後移:o(n)

若是插入連續10個元素

順序表每次都是o(n)

鍊錶第一次:o(n)之後每次都是o(1)

1)單鏈表整表刪除

status clearlist(linklist *l)

(*l)->next = null;

return ok;

}時間效能:

---查詢:

順序儲存結構o(1)

單鏈表o(1)

---插入和刪除

順序儲存結構需要平均移動表廠一般的元素,時間為o(n)

單鏈表在計算出某位置的指標後,插入和刪除時間僅為o(1)

---空間效能:

順序儲存結構需要預分配儲存空間,分大了,造成空間浪費,分小了,容易發生一出

單鏈表不需要分配儲存空間,只要有就可以分配,元素個數也不瘦限制

2)單鏈表整表建立

0)頭插法建立鍊錶:

void createlisthead(lisklist *l,int n)

}1)尾插法建立鍊錶:

void createlisttail(linklist *l,int n)

r->next = null;

}

單鏈表整表建立和整表刪除

對於每個鍊錶來說,它所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際的需求即使生成。所以建立單鏈表的過程就是乙個動態生成鍊錶的過程。即從 空表 的初始狀態開始,依次建立各元素結點,並逐個插入鍊錶。單鏈表整表建立的演算法思路 1 宣告一指標p和計數器變數i 2 初始化一空鍊錶l ...

資料結構(三) 單鏈表的整表建立與刪除

單鏈表整表的建立思路 1.說明一結點p和計數器變數i 2.初始化一空鍊錶l 3.讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表 4.迴圈 生成一新結點賦值給p 賦值 將p插入到頭結點與千億新結點之間 這裡的賦值採用隨機數賦值 void createlisthead linklist l,...

資料結構(四) 單鏈表的整表建立與刪除

單鏈表整表的建立思路 1.說明一結點p和計數器變數i 2.初始化一空鍊錶l 3.讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表 4.迴圈 生成一新結點賦值給p 賦值 將p插入到頭結點與千億新結點之間 這裡的賦值採用隨機數賦值 cpp view plain copy void create...