寫法一:int Empty(List *L)//判空{return L->size=0;}void Clear(List* L)//清表{while(!Empty(L))Pop_front(L);L->size=0;}void Free(List* L)//撤銷所有節點空間{Clear(L);free(L->head);free(L->tail);}#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<math.h>typedef int Type;struct Nodestruct Node* next;Type data;struct Node* prev;};typedef struct Node Node;typedef struct{Node* head;int size;Node* tail;}List;int main(){List L;Init(&L);//中間還有對鏈表的一系列操作如前插,前刪等Free(&L);return 0;}寫法二:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<math.h>typedef int Type;struct Node{struct Node* next;Type data;struct Node* prev;};typedef struct Node Node;typedef struct{Node* head;int size;Node* tail;}List;int main(){List L;Init(&L);//中間還有對鏈表的一系列操作如前插,前刪等free(L.tail);free(L.head);L.head=NULL;L.tail=NULL;L.size=0;return 0;}
1 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
寫法一主函數少了clear調用,寫法2好像不能全部釋放內存吧,L你最后只是設置為空,但沒有delete掉。
兩個寫法區別就是一個是在主函數中調用函數,另一個是直接在主函數里面進行操作,對于你這小問題兩者都行,但大一點問題,比如學生信息管理系統,第一種方法比較好。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消