資料結構 線性鍊錶的c語言實現

2021-09-27 08:59:38 字數 2938 閱讀 3548

鍊錶實現的邏輯分析**

為了實現業務結點的靈活定義,我們需要定義單獨定義鍊錶結點來實現鍊錶的串接與查詢,而要讓業務結點包含鍊錶結點,以實現通過鍊錶結點將業務結點串接起來。

而為了實現業務結點與鍊錶結點的位址統一,我們在定義業務結點時要將鍊錶結點包含在頭部,以實現目的。 示意圖如下圖所示。

鍊錶結點定義:

typedef struct _tag_linklistnode

linklistnode;

定義業務結點時將鍊錶結點包含進來

typedef struct teacher

teacher;

linklist.h

#ifndef _mylinklist_h_

#define _mylinklist_h_

typedef void linklist;

typedef struct _tag_linklistnode

linklistnode;

linklist* linklist_create();

void linklist_destroy(linklist* list);

void linklist_clear(linklist* list);

int linklist_length(linklist *list);

int linklist_insert(linklist* list, linklistnode* node, int pos);

linklistnode* linklist_get(linklist* list, int pos);

linklistnode* linklist_delete(linklist* list, int pos);

#endif // !_mylinklist_h_

linklist.c

先定義乙個鍊錶控制代碼,注入乙個頭結點和存放鍊錶長度的變數。

typedef struct _tag_linklist

tlinklist;

建立鍊錶,通過控制代碼申請鍊錶記憶體,進行長度和指標初始化。將控制代碼的指標位址返回

linklist* linklist_create() 

銷毀和清空鍊錶

void linklist_destroy(linklist* list)

return ;

}void linklist_clear(linklist* list)

tlist = (tlinklist *)list;

tlist->length = 0;

tlist->header.next = null;

return ;

}

返回長度

插入結點,定義乙個current結點從頭結點開始查起,到pos位置結束

int linklist_insert(linklist* list, linklistnode* node, int pos)

tlist = (tlinklist *)list;

current = &(tlist->header);

for (i = 0; i < pos&&(current->next!=null); i++)

node->next = current->next;

current->next = node;

tlist->length++;

return 0;

}

刪除結點

linklistnode* linklist_delete(linklist* list, int pos)

tlist = (tlinklist *)list;

current = &(tlist->header);

for (i = 0; i < pos && (current->next != null); i++)

ret = current->next;

current->next = ret->next;

tlist->length--;

return ret;

}

獲取結點

linklistnode* linklist_get(linklist* list, int pos)

tlist = (tlinklist *)list;

current = &(tlist->header);

for (i = 0; i < pos && (current->next != null); i++)

return current->next;

}

測試用例

ret = linklist_insert(list, (linklistnode*)&t5, 0);

for (i = 0; i < linklist_length(list); i++)

printf("tmp->age:%d", tmp->age);

}

資料結構C語言實現 線性鍊錶

declaration.h ifndef declaration h included define declaration h included define true 1 define false 0 define ok 1 define error 0 define infeasible 1 ...

資料結構 線性表(C語言實現)

一.線性表 1 定義 是由同一型別的資料元素構成的有序序列的線性結構。2 儲存實現 順序儲存,鏈式儲存 順序儲存的優點 儲存密度大,由於用的是陣列不需要儲存位址。順序儲存的缺點 對順序表插入刪除時需要移動資料元素來實現,影響執行效率 鏈式儲存的優點 對線性表的插入刪除不需要移動資料元素,只需要修改鏈...

資料結構線性表C語言實現

include include define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2 define initsize 100 typedef int status t...