鍊錶的基本操作

2021-10-01 02:37:04 字數 2967 閱讀 2408

構成鍊錶

標頭檔案#include#include#include

;//建立節點

-

全域性定義鍊錶頭尾指標

struct node *head=

null

;struct node *end=

null

;

void

addlisttill

(int a)

else

頭添

struct node *

readlist()

return head;

}

1.建立乙個節點

(給節點在堆區分配一段記憶體)

2.給節點資料進行賦值

3.尾新增(兩種情況:a.乙個節點都沒有head=null b.已經有了節點,新增到尾巴上)

void

scanlist()

2.查詢指定的節點(遍歷,乙個乙個找)(findnode)(結構體函式)

struct node *

findnode

(int a)

temp=temp->next;

}return

null

;}

定義乙個臨時變數指向頭,對資料中的節點進行判斷,若找到,返回該節點,沒找到,返回null

1.沒有節點(null=head)

2.沒找到此節點(findnode)—返回為null

3.有此節點(在連線到鍊錶上時,分為兩種情況,找到的節點在尾部,找到的節點在中間)

void

addlistrand

(int index,

int a)

//在指定位置index增加節點a

//分為三種情況

//struct node *pt=

findnode

(index)

;//pt就是找指定位置的指標if(

null

==pt)

//struct node *temp=

(struct node*

)malloc

(sizeof

(struct node));

temp->a=a;

temp->next=

null;if

(pt==end)

//在尾部

else

1.乙個乙個清空

2.記錄頭結點的位置,實現++,釋放

3.頭尾清空

void

freelist()

head=

null

; end=

null

;}

1.鍊錶為空

2.只有乙個節點

3.有大於1的節點(找到尾節點的前乙個節點)

void

deletelisttail()

else

free

(end)

; end=temp;

end->next=

null

;//注意尾巴指標為空

}}

1.空節點

2.非空節點

void

freeheadlist()

else

}

1.沒有節點

2.沒有指定節點

3.找到了指定節點:a.只有乙個節點

b.只有兩個節點(看刪除頭還是刪除尾)

c.有多個節點(看刪除頭還是刪除尾還是刪除中間某個節點//直接跳過temp節點)

void

deletelistrand

(int a)

//無指定節點

if(head==end)

//有乙個節點

else

if(head->next=end)

else

if(head==temp)

}//有兩個節點

else

pt->next=temp->next;

free

(temp);}

}}

主函式

void

main()

addlistrand(4

,14);

deletelisttail()

;deletelistrand(4

);scanlist()

;freelist()

;pfind=

findnode(5

);if(pfind!=

null

)else

else

}return head;

}struct listnode *

deletem

(struct listnode *l,

int m )

刪除頭 if

(temp->data==m)

刪除尾 p=temp;

q=temp->next;

//q找要刪除的點

while

(q)else

}return temp;

} 刪除中間

鍊錶的基本操作

include include include include using namespace std struct listnode void initnode listnode node bool isempty listnode head void pushfront listnode hea...

鍊錶的基本操作

鍊錶操作是最基本的 必須掌握的知識點,最好滾瓜爛熟,透徹理解。工作時間短用的也不夠頻繁,還是總結一下比較好,以加強鞏固。1.單鏈表 結點形式 區分幾個概念 首節點 第乙個元素所在節點。頭指標 指向首節點的指標。頭結點 為了操作方便,在第乙個節點之前附設的乙個結點,此時指向頭結點的為頭指標。基本操作 ...

鍊錶的基本操作。。。

include node.h 列印鍊錶 void print node head printf n 從尾部插入 void insert tail node head,const int d while t next null t next p p next null 從頭部插入 void inser...