單鏈表的基本操作

2021-10-03 18:45:09 字數 1538 閱讀 2308

單鏈表其實就是一系列結構體通過指標連線起來,可以分為兩種,一種帶頭節點,一種不帶頭節點。具體定義如下。
struct linklist
(一)使用頭插法建立乙個帶頭節點的單鏈表
struct linklist *head=

(struct linklist*

)malloc

(sizeof

(struct linklist)

);(如果不帶頭節點,則不需要建立頭節點即可)

void

createlist

(struct linklist *

*node)

else

}

*頭插法的關鍵就是保持頭節點不變,每次生成乙個節點都鏈結在頭節點之後。*

(二)使用尾插法建立乙個帶頭節點的單鏈表

void

createlist

(struct linklist *

*node)

else

}

單鏈表的排序方式有很多種,這裡我介紹一下常用的冒泡法排序。冒泡法排序對於鍊錶來說就跟陣列有些不同。陣列排序有陣列標號,排序就很簡單,for迴圈巢狀就搞定了。但是對於鍊錶來說,相互之間的連線方式是通過指標,所以排序就相對複雜很多。排序的思想就是利用三個指標,分別指向前繼,中繼,後繼結點。時刻讓這三個結點順序為小、中、大,如果不滿足這個順序就進行一次交換。

第一趟:讓前繼結點指向頭結點,中繼結點指向頭結點->next,後繼結點指向頭結點->next->next,定義乙個尾指標初始化為null,然後從上往下進行排序,直到後繼結點等於null(鍊錶末尾)。當第一趟下來,就把最大的數搬運到了最末尾,因此最後乙個數就可以不用再進行排序,我們就可以把尾指標從null往前挪乙個指向最後乙個數。然後依次類推進行第二趟,第三趟。。。。直到頭結點->next指向為end尾指標。**如下:

void

maopaixu

(struct linklist *

*node)

end =

null

;while((

*node)

->next!= end)

} end = cur;

//每一趟排序完都將當前指標作為尾指標

}}

(newnode)

->next =

(node)

->next;

//將新建的結點->next指向要插入位置的下乙個結點

(node)

->next = newnode;

//將要插入位置之前的結點->next指向新建結點

刪除操作很簡單:

1、找到要刪除的結點的上乙個結點

單鏈表基本操作

include include include include includeusing namespace std typedef struct node node,plinklist plinklist createfromhead node pstnode node malloc sizeof...

單鏈表基本操作

單鏈表的初始化,建立,插入,查詢,刪除。author wang yong date 2010.8.19 include include typedef int elemtype 定義結點型別 typedef struct node node,linkedlist 單鏈表的初始化 linkedlist...

單鏈表基本操作

include using namespace std define namelenth 20 define ok 0 define error 1 typedef struct flagnode node 生成結點 inline node newnode 銷毀化煉表 void destroylin...