鍊錶 單鏈表的基本操作詳解 C語言

2021-09-24 02:17:45 字數 3153 閱讀 1571

本文是單鏈表的c語言實現方法,包括單鏈表的建立、插入、刪除、修改、查詢等基本操作。

鍊錶的底層是通過指標將乙個個零散的記憶體塊連線起來,鍊錶的每個記憶體塊稱為結點。

單鏈表結點結構體

//結點結構體

typedef

struct node

node;

建立結點
//建立結點

node*

create_node

(int data)

建立單鏈表

步驟:首先需要建立乙個頭結點,然後頭結點指向乙個新結點,新的結點又指向乙個新結點,我們可以通過迴圈來建立乙個指定長度的單鏈表,如下所示:

//建立長度為num的單鏈表

node*

create_list

(int num)

return head;

}

獲取鍊錶的長度
//鍊錶長度

size_t list_len

(node* head)

return len;

}

插入結點

插入步驟,如下圖:

//在鍊錶指定位置插入乙個結點 返回頭結點

node*

list_insert

(node* head,

int index,

int data)

else

node* node =

create_node

(data)

; node->next = tmp->next;

tmp->next = node;

}return head;

}

刪除結點

刪除步驟,如下圖:

//刪除指定位置的乙個結點 返回頭結點

node*

list_delete

(node* head,

int index)

else

node* tmp = node->next;

node->next = tmp->next;

free

(tmp)

;//釋放刪除結點的記憶體

tmp =

null;}

return head;

}

查詢鍊錶中指定的資料
node*

list_find

(node* head,

int data)

return

null

;//鍊錶中不存在該資料,返回null

}

修改鍊錶中指定位置結點的值
bool modify_index

(node* head,

int index,

int data)

node->data = data;

return true;

}

修改鍊錶中指定資料的值
bool modify_data

(node* head,

int data,

int val)

return false;

}

完整**

鍊錶測試**請前往:

#include

#include

#include

#include

//結點結構體

typedef

struct node

node;

//建立結點

node*

create_node

(int data)

//建立長度為num的鍊錶

node*

create_list

(int num)

return head;

}//顯示鍊錶的資料

void

show_list

(node* head)

printf

("\n");

}//獲取鍊錶長度

size_t list_len

(node* head)

return len;

}//在鍊錶指定位置插入乙個結點 返回頭結點

node*

list_insert

(node* head,

int index,

int data)

else

node* node =

create_node

(data)

; node->next = tmp->next;

tmp->next = node;

}return head;

}//刪除指定位置的乙個結點 返回頭結點

node*

list_delete

(node* head,

int index)

else

node* tmp = node->next;

node->next = tmp->next;

free

(tmp)

;//釋放刪除結點的記憶體

tmp =

null;}

return head;

}//查詢鍊錶中指定的資料

node*

list_find

(node* head,

int data)

return

null

;//鍊錶中不存在該資料,返回null

}//修改鍊錶中指定位置結點的值

bool modify_index

(node* head,

int index,

int data)

node->data = data;

return true;

}//修改鍊錶中指定資料的值

bool modify_data

(node* head,

int data,

int val)

return false;

}

更多鍊錶相關**請前往:

遍歷鍊錶(單鏈表的基本操作)

建立乙個公升序鍊錶並遍歷輸出。輸入描述 輸入的每個案例中第一行包括1個整數 n 1 n 1000 接下來的一行包括n個整數。輸出描述 可能有多組測試資料,對於每組資料,將n個整數建立公升序鍊錶,之後遍歷鍊錶並輸出。輸入例子 4 3 5 7 9 輸出例子 3 5 7 9 ac code include...

328奇偶鍊錶(單鏈表基本操作)

1 題目描述 給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。說明 2 示例 輸入 1 2 3...

鍊錶 單鏈表的基本運算

實現單鏈表的基本運算 初始化 插入 刪除 求表的長度 判空 釋放。1 初始化單鏈表l,輸出l next的值 2 依次採用尾插法插入元素 輸入分兩行資料,第一行是尾插法需要插入的字元資料的個數,第二行是具體插入的字元資料。3 輸出單鏈表l 4 輸出單鏈表l的長度 5 判斷單鏈表l是否為空 6 輸出單鏈...