資料結構頭指標鍊錶

2021-08-04 23:06:28 字數 1901 閱讀 1769

頭指標鍊錶

頭指標煉表相較於頭結點鍊錶操作起來更繁瑣。

以下是頭指標鍊錶的基本操作:

#include #include #define true   1

#define false 0

typedef int linkdata; // 鍊錶的資料型別

typedef struct _node

node;

// 鍊錶的頭插

int insert_head(node **h, linkdata data)

// 給結點成員變數賦值

node->data = data;

node->next = *h;

// 讓新節點變為鍊錶的第乙個結點

*h = node;

return true;

}// 尾插

int insert_last(node **h, linkdata data)

// 建立新節點

node* node = (node*)malloc(sizeof(node)/sizeof(char));

if (node == null)

// 給結點成員變數賦值

node->data = data;

node->next = null;

// 找最後乙個結點

node * tmp = *h; // 指向第乙個結點

if (tmp == null) // 空表

else

tmp->next = node;

} return true;

}// 在第 pos 個節點處插入資料,鍊錶結點從1開始,沒有第0個結點

int insert_pos (node** h, int pos, linkdata data)

// 給結點成員變數賦值

node->data = data;

// 空表的狀態下,只能插入在第乙個結點處

if (*h == null)

node->next = null;

*h = node;

} else // 非空表,需要找到插入位置的前乙個結點

else

if (tmp == null)

node->next = tmp->next;

tmp->next = node;

} }return true;

}int delete_pos(node** h, int pos)

else

if (tmp->next == null)

node* p = tmp->next;

tmp->next = p->next;

free(p); }

return true;

}int reverse_list(node **h)

(*h)->next = null;

*h = pre;

return true;

}void display(node *h)

printf ("\n");

}int main()

#if 0

insert_pos(&head, 1, 1000);

insert_pos(&head, 10, 2000);

insert_pos(&head, 13, 3000);

insert_pos(&head, 15, 3000);

insert_pos(&head, 0, 1000);

#endif

//delete_pos(&head, 11);

display(head);

reverse_list(&head);

display(head);

return 0;

}

資料結構第二章 鍊錶中的頭指標

這裡先講個杜撰的故事 有一名超級無敵的殺手,暫且取名叫蠻王 模擬下文的linkedlist 吧,為了生活已經退隱峽谷,但是時常想起自己的那把絕世 九頭鞭 linkedlist要操作的鍊錶 這把屠龍刀,藏於峽谷的某處,但是藏匿的位址 模擬head頭指標 是存在於蠻王的兜裡的。每當需要的時候,就可以根據...

資料結構(鍊錶雙指標)2020 08 10

給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,...

資料結構 鍊錶

鍊錶 what 就是一張鏈式儲存的表,是一種資料結構,是基礎,所以還是不要想有什麼用。具體呢?在c中就用結構體實現物件描述,然後通過函式來實現各個基本操作 c 則用類來表述,c中的結構體就可以看成c 中的類,然後通過類封裝各個操作步驟。這些操作實現後就需要 來測試,號稱demo,就是main函式裡面...