資料結構與演算法之鏈式表的c實現

2021-09-12 07:04:27 字數 2460 閱讀 8685

鏈式表:

採用鏈式儲存的一種線性標。

特點:元素在記憶體中儲存的位置是分散的,利用指標來建立一對一的聯絡。

優點:記憶體利用率高,元素的數量不限,新增和刪除元素方便。

缺點:訪問速度慢,只能從頭到尾進行遍歷。

設計元素:

資料域:儲存各型別資料。

指標域:元素的型別,指向下一處元素。

來個簡單的鏈式結構感受一下鏈式儲存吧

#define type int

//設計元素結構

typedef struct node

node;

node *create_node(type data)

int main()

return 0;

}

下面來個 正兒八經 的鏈式表

#define type int

//設計元素結構

typedef struct node

node;

node *create_node(type data)

typedef struct list

list;

//建立鍊錶

list *create_list();

//銷毀鍊錶

void destory_list(list *list);

//在尾部新增元素

void add_list(list *list,type val);

//在指定位置新增元素

bool insert_list(list *list,type val);

//按位置刪除元素

bool delete_index_list(list *list,int index);

//按值刪除元素

bool delete_value_list(list *list,type val);

//按值查詢元素

node *find_value_list(list *list,type val);

//按位置訪問元素

node *find_index_list(list *list);

//遍歷鍊錶

void show_list(list *list);

//建立鍊錶

list *create_list()

//銷毀鍊錶

void destory_list(list *list)

while(list->head);

free(list); }

//在尾部新增元素

void add_list(list *list,type val)

else

list->cnt++; }

//在指定位置新增元素

bool insert_list(list *list,int index,type val)

node *node = list->head;

while(index--)

node *temp = create_node(val);

temp->next = node->next;

node->next = temp;

list->cnt++;

return true;

}//按位置刪除元素

bool delete_index_list(list *list,int index)

list->cnt --;

if(index == 0)

node *prev = list->head;

while(--index)

node *del = prev->next;

prev->next = del->next;

free(del);

}//按值刪除元素

bool delete_value_list(list *list,type val)

node *node = list->head;

node *del = list->head->next;

while(node != null)

node = del;

del = del->next;

} return false;

}//按值查詢元素

node *find_value_list(list *list,type val)

node = node->next;

} return null;

}//按位置訪問元素

node *find_index_list(list *list,int index)

node *node = list->head;

while(index--)

return node;

}//遍歷鍊錶

void show_list(list *list)

printf("\n");

}

C 資料結構 鍊錶的鏈式實現

傳統的鍊錶不能實現資料和鍊錶的分離,一旦資料改變則鍊錶就不能用了,就要重新開發。如上說示 外層是teacher,裡面小的是node.ifndef mylinklist h define mylinklist h typedef void linklist 鍊錶上下文,任意型別 typedef str...

資料結構之鏈式佇列以及C 實現與模板

佇列,一種特殊的線性表 特點 只允許在一端輸入,在另一端輸出。輸入端稱為隊尾,輸出端稱為隊頭 因此,佇列,又稱為先進先出表 fifo 類似於生活中的排隊,先來的排在前頭,後來的排在後頭,乙個乙個辦理業務。佇列有兩種,一種叫做迴圈佇列 順序佇列 另一種叫做鏈式佇列。這一篇講的是鏈式佇列,迴圈佇列在另外...

資料結構 鏈式表

資料結構課作業之鏈式表。1 include 2 include 3 include 4 using namespace std 56 struct node7 1213 class stulist14 3334 void stulist clear 3543 44 45void stulist pr...