單鏈表的操作

2021-09-25 05:20:36 字數 2092 閱讀 2019

1.節點型別:

//單鏈表節點所裝的資料

typedef

struct lnodelnode,

*linklist;

2.把資料封裝成節點單獨做成乙個函式,簡潔明瞭。

//給乙個資料data,做成乙個節點型別

lnode*

getnode

(elemtype e)

3…單鏈表的頭插法形成鍊錶

注意:先分節點 在讀資料。如果先讀資料 在做節點的話會導致-1也做成節點

void

list_headinsert

(linklist &l)

}

4.單鏈表的尾插法形成鍊錶

//尾插法建立鍊錶

void

list_tailinsert

(linklist &l)

}

5.按序號查詢節點i為第幾個節點

//按序號查詢節點

lnode *

getelem

(linklist l,

int i)

return p;

}

6.按值查到表的節點,**簡潔明瞭

//按值查到表的節點

lnode *

locateelem

(linklist l, elemtype e)

return p;

}

7.任意第 i 位置插入節點e

擴充套件前插操作:方法一,同下述方法可以找到i-1的節點,後插法即可;方法二,找到第 i 的節點,進行後插法,data資料進行互換。

//任意i位置插入節點

void

listinsert_i

(linklist &l,

int i, elemtype e)

8.刪除第i個位置的節點,找i-1進行刪除

擴充套件方法:找到i,換掉 i 和 i+1的data,刪除後繼i+1。

//刪除第i個位置的節點

void

delete_node

(linklist &l,

int i)

9.單鏈表其他常用演算法操作

//(1)遞迴刪除不帶頭節點l中所有值為x的節點

void

del_x_1

(linklist &l, elemtype x)

else

del_x_1

(l->next,x);}

//(2)單鏈表中刪除所有值為x的節點

void

del_x_2

(linklist &l,elemtype x)

else}}

//(3)逆置鍊錶遞迴法,有空間的消耗

void

reverse_print

(linklist l)

//(4)o(n)演算法刪除單鏈表中最小的數,演算法思想,冒泡法到剩最後兩個數。

void

del_min

(linklist &l)

lnode *p=l->next->next;

//p指向第二個節點

while

(p->next!=

null

)//遍歷單鏈表冒泡法到最後兩個數

else}if

(pre->data < p->data)

//最後兩個前驅小的話,交換資料

pre->next=

null

;free

(p);

}//(5)鍊錶的逆置,兩種非遞迴解法,空間o(1),第(3)題是逆置的遞迴解法但有空間消耗

void

reverse_list_1

(linklist &l)

}void

reverse_list_2

(linklist &l)

l->next=p;

}

單鏈表的操作

單鏈表是一種非常重要的資料結構,下面用c語言對單鏈表的操作做乙個簡單的總結 typedef struct nodenode,linklist 1 單鏈表的建立 建立乙個單鏈表,鍊錶裡面存放有十個偶數 2到20 有頭節點,頭節點不存放元素。linklist createlinklist return ...

單鏈表的操作

1.定義單鏈表的介面函式 ifndef linklist h define linklist h typedef int elemtype typedef struct node node node initnode bool addnode node head,elemtype data 頭插法 ...

單鏈表的操作

pragma once extern c list node,list link 頭插建立鍊錶 list link create list head int n 尾插法建立鍊錶 list link creat list tail int n 獲取長度 int get list length list...