重點講一下插入和刪除以及頭插法和尾插法,其他的應該很好推。
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指向下個元素指向變成s的指向*/
p->next = s; /*把s賦值給p的後繼*/
return ok;
}
傳入引數有3個,乙個是鍊錶,因為要對鍊錶進行修改,因此傳入了乙個*l,第二個是位置資訊,第三個是插入元素的內容。
刪除鍊錶結點
status listdelete(linklist *l,int i,elemtype *e)
if (!(p->next) || j > i)
return error; /* 第i個元素不存在 */
q = p->next;
p->next = q->next; /* 將q的後繼賦值給p的後繼 */
*e = q->data; /* 將q結點中的資料給e */
free(q); /* 讓系統**此結點,釋放記憶體 */
return ok;
}
這裡多了一步**free ,可以與上面的插入相對,乙個是插入生成新節點,乙個是刪除解放舊結點。 資料結構學習 鍊錶
將從下面4部分進行介紹 首先介紹鍊錶是什麼,然後介紹為什麼定義鍊錶,接著是鍊錶的分類,最後簡單介紹一下鍊錶結點的插入與刪除方法。首先,在介紹鍊錶之前,我們先介紹一下什麼是順序儲存結構。我們知道資料在計算機中的儲存就像貨物在倉庫中的儲存一樣,不但占用一定的空間,還要有乙個標示儲存位置的位址。計算機通過...
資料結構學習 鍊錶
由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間,而線性表和順序表相應的時間複雜度分別是o logn 和o 1 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...
資料結構學習 鍊錶結構
儲存結構定義 struct node typedef struct node ptrtonode typedef ptrtonode list typedef ptrtonode position struct node 書寫 package thedatastructureaboutlinked ...