二 1 3 鍊錶的建立插入與刪除

2021-09-01 18:34:53 字數 1878 閱讀 1447

一.鍊錶的建立

1.思路分析

鍊錶建立節點有兩種方法,一種是前插法,一種是後接法;前插法就是在頭節點和首元節點之間插入節點,後接法是在鍊錶的最後乙個節點的末尾插入節點.

這裡可能有人又有疑問了.什麼是頭節點?什麼是首元節點?那麼這裡來解釋一下:通常為了方便操作,鍊錶的第乙個節點是不用來儲存資料元素的,這個節點就稱作頭節點,而從鍊錶的第二個節點才開始儲存資料元素,這個節點稱為首元節點,又稱為表頭節點.

2.**實現

這裡舉例乙個儲存學生資訊的鍊錶

//學生資訊結構體 

typedef

struct student

lnode,

*linklist;

//鍊錶(表頭)初始化函式

void

initlist

(linklist *l)

//前插法建立鍊錶

void

createlist

(linklist l)

}//後接法建立鍊錶

void

createlist

(linklist l)

}//輸出鍊錶資料

void

printlist

(linklist l)

}

注意:新建節點時,一定要將新建節點的next指標指向null,即node->next=null;因為鍊錶輸出時遍歷鍊錶節點是以遍歷到鍊錶末尾的空指標為結束條件,雖然不把新建節點的next指標賦為空不會對建立鍊錶產生影響,但是卻會使輸出操作出錯,所以一定要記得新建節點時一定要把新建節點的後繼指標next賦為null.

二.鍊錶的插入

1.思路分析

要在指定位置插入節點,那麼我們要找到指定位置的前乙個節點,在這個節點和指定位置節點間插入我們的新節點.

2.**實現

//將節點插入到鍊錶指定位置,引數:煉表頭指標,插入節點,插入位置	

void

insertnode

(linklist l,linklist node,

int pos)

temp=l->next;

//暫存要插入位置的節點的頭指標

l->next=node;

//前乙個位置的後繼賦為要插入的節點的頭指標

node->next=temp;

//新鍵節點的後繼賦為插入位置的原來元素的頭指標

}

三.鍊錶的刪除

1.思路分析

要刪除指定位置的節點,那麼我們要找到指定位置的前乙個節點,使這個節點的後繼指向要刪除的節點的後繼,再釋放要刪除的節點的儲存空間,就完成了刪除操作

2.**實現

//將鍊錶指定位置的節點刪除,引數:煉表頭指標,刪除節點的位置

void

deletenode

(linklist l,

int pos)

temp=l->next;

//要刪除的節點

l->next=l->next->next;

//要刪除的節點的前驅節點的後繼賦值為要刪除的節點的後繼

free

(temp)

;//釋放要刪除節點的儲存空間

}

四.總結

為了方便操作,鍊錶的第乙個節點通常不儲存資料元素,稱為頭節點.鍊錶的插入與刪除操作要依靠插入位置(刪除位置)的前乙個節點來實現,所以演算法關鍵要找到到指定位置的前乙個節點,來進行操作.

鍊錶建立 插入 刪除

這兩天,拼命理解鍊錶,儘管現在理解還是不夠,但終於把長久以來一直折磨我的鍊錶用c 打出來了。還是有點小小的成就感。以下是 包括鍊錶建立 頭插法和尾插法 插入乙個位置的鍊錶 刪除乙個位置的鍊錶以及整個鍊錶的刪除。define null 0 include using namespace std int...

雙向鍊錶的建立插入與刪除

雙向鍊錶的建立插入與刪除 注意因為建表時用了字元型資料所以輸入數字時只能輸0 9 include includetypedef struct node node,list list tailcreat 尾插法建立鍊錶 void insert list head,int x,char value,in...

鍊錶的建立 刪除 插入

1.鍊錶的建立 需要乙個頭指標 結點指標 尾指標即可。這裡值得注意的是,建立的過程頭指標是不能變的,而每次插入乙個節點,尾指標都要後移乙個節點 一開始把尾指標指向頭指標 如建立含有n個結點的鍊錶如下 node create else pend next null ps new node delete...