這段程式碼的目的是銷毀一個鏈表。L
指向鏈表的頭節點,q
用來遍歷整個鏈表並釋放每一個節點的內存。在 while
循環中,L
和 q
的變化用來確保整個鏈表的每一個節點都被正確釋放。讓我們逐步分析 while
循環中的每一行程式碼的作用,並通過一個例子來說明 L
和 q
的變化。
程式碼分析
Status DistoryList_L(LinkList &L) {
if (!L) { // 如果線性表不存在,返回 ERROR
printf("線性表不存在\n");
return ERROR;
}
LinkList q = L->next; // 使 q 指向單鏈表的首元結點
while (q != NULL) { // 當 q 節點不為空時一直進入循環
free(L);
L = q; // 將 q 節點賦值給 L 節點
if (!L) { // 如果線性表不存在,返回 ERROR
printf("線性表不存在\n");
return ERROR;
}
LinkList q = L->next; // 使 q 指向單鏈表的首元結點
while (q != NULL) { // 當 q 節點不為空時一直進入循環
free(L);
L = q; // 將 q 節點賦值給 L 節點