迴圈鍊錶(鏈式儲存)

2021-09-21 05:43:08 字數 2316 閱讀 5821

1、定義鍊錶節點以及表頭資料結構

typedef struct circlelinknodecirclelinknode;
typedef struct circlelinklistcirclelinklist;
2、鍊錶的初始化

circlelinknode* circlelinklistinit()

//建立頭結點 建立頭結點 是為了空煉表和非空煉表處理一致

circlelinknode* head = (circlelinknode*)malloc(sizeof(circlelinknode));

if (head == null)

return null;

}head->data = null;

head->next = null;

//初始化鍊錶

dlist->head = head;

dlist->rear = head;

dlist->length = 0;

return dlist;

}

3、指定位置插入鍊錶節點

void circlelinklist_insert(circlelinklist* dlist, int pos, void* data)

if (pos > dlist->length)

//輔助指標

circlelinknode* pcurrent = dlist->head;

for (int i = 0; i < pos;i++)

//建立新節點

circlelinknode* newnode = (circlelinknode*)malloc(sizeof(circlelinknode));

if (newnode == null)

newnode->data = data;

newnode->next = null;

//將新結點插入到鍊錶中

newnode->next = pcurrent->next;

pcurrent->next = newnode;

//判斷是否在尾部插入結點

if (pcurrent == dlist->rear)

dlist->length++;

}

4、刪除指定位置鍊錶節點

void circlelinklist_delete(circlelinklist* dlist, int pos)

if (pos >= dlist->length)

//賦值指標

circlelinknode* pcurrent = dlist->head;

for (int i = 0; i < pos;i++)

//快取被刪除結點

circlelinknode* pdel = pcurrent->next;

//重新建立前後結點關係

pcurrent->next = pdel->next;

//釋放被刪除結點記憶體

free(pdel);

//鍊錶結點數量減 1

dlist->length--;

}

5、判斷鍊錶是否為空

int isemptycirclelinklist(circlelinklist* dlist)

return 0;

}

6、獲取鍊錶的節點數

int circlelinklist_length(circlelinklist* dlist)

return dlist->length;

}

7.清空鍊錶

void circlelinklist_clear(circlelinklist* dlist)

dlist->head->next = null;

dlist->rear = dlist->head;

dlist->length = 0;

}

8、銷毀鍊錶

void circlelinklist_destroy(circlelinklist* dlist)

free(dlist);

}

9 1 5 簡單鍊錶,鏈式儲存

鍊錶有單鏈表,雙鏈表,環鏈表 做一模組,用鍊錶防止記憶體洩漏,定義乙個鍊錶,需要一結構體 鍊錶記憶體不是連續的,鍊錶的缺點,找某個數字。陣列就找到a 5 而鍊錶還要鏈式遍歷才可以找到,查詢沒有優勢 1 一般的形式列印出鍊錶 建立乙個struct這樣型別的結構體,struct mystruct voi...

線性表 鏈式儲存結構之 迴圈鍊錶

迴圈鍊錶 circular linked list 是一種首尾相接的單鏈表。1 單迴圈鍊錶 在單鏈表中,將終端結點的指標域null改為指向表頭結點或開始結點即可。2 多重鏈的迴圈鍊錶 將表中結點鏈在多個環上。單迴圈煉表示意圖 注意 迴圈鍊錶的操作和線性表基本一致,只是 判斷空鍊錶的條件是head h...

資料結構 線性表鏈式儲存結構 迴圈鍊錶

巨集定義 define failed 1 define success 0 typedef struct cirslinknode cirslinknode typedef struct cirdlinknode cirdlinknode 帶頭結點的迴圈單鏈表,統計其data域值為x的結點個數 in...