✔ 最佳答案
以下是說明:
// 宣告串列節點
list_pointer ptr;
// 配置動態記憶體:向作業系統借一塊記憶體空間,用完要還給系統
ptr = (list_pointer)malloc(sizeof(list_node));
// 把資料丟給節點結構的 data 變數
ptr->data = value;
// 以下為了搜尋節點而做的記錄
// 記錄前一個節點,從頭開始記錄
previous = head;
// 記錄第一個資料節點,從頭後面的第一個節點開始記錄
current = head->next;
// 插入節點:利用迴圈搜尋資料
// 條件:(current != NULL) 只要節點存在
// 條件:(current->data > ptr->data) 只要目前的節點(資料)大於新增的節點(資料)
while((current != NULL) && (current->data > ptr->data))
{
// 移動:記錄目前的節點為前一個節點
previous = current;
// 移動:記錄下一個節點為目前的節點
current = current->next;
}
// 插入串列:把目前節點接到新增節點的後面
ptr->next = current;
// 插入串列:把新增節點接到前一個節點的後面
previous->next = ptr;
你的節點結構可能是…
struct list_node
{
int data;
struct list_node* next;
};
typedef struct list_node* list_pointer;
ptr 是節點,但是它是指標的型態,必須要用到->(箭頭)來指向它本身的資料成員變數;把節點的資料成員取出,把資料指定給成員。ptr->next 在這裡的用途在於,記錄下一個節點的位置。