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...