測試代碼筆記如下: 附: ...
測試代碼筆記如下:
#include<stdio.h> #include<stdlib.h> typedef struct node { int data;//數據 struct node*pre;//前驅 struct node*next;//後繼 }NODE,*PNODE; //申請一個結點 PNODE creatNode(int data)//要修改內容 傳地址 { PNODE p = (NODE*)malloc(sizeof(NODE)); p->data = data; p->pre = NULL; p->next = NULL; return p; } void insert(PNODE head, int data) { PNODE p = creatNode(data); //插入的位置 //頭插 head->A->B 插入C p->next = head->next;//保留後面的結點C->next=B //這一步必須最先寫 //後面三步可以換位置 if (p->next!=NULL) p->next->pre = p;//讓B->pre=C head->next = p;//A->next=C p->pre = head;//C->pre=A //中間插入 } void deleNode(PNODE head, int data) { PNODE p = head->next;//第一個節點不存數據 while (p != NULL) { if (p->data == data) { //找到位置 p->pre->next = p->next; if(p->next!=NULL) p->next->pre = p->pre; free(p); break;//p已經釋放 所以p不能再用於迴圈 } p = p->next; } } void deleAllNode(PNODE head) { PNODE p = head; while (head)//判斷head不等於NULL { p = head; head = head->next; free(p);//釋放結點 } } int main() { PNODE head; head = creatNode(0);//初始化 //迴圈插入節點 //刪除節點) getchar(); return 0; }
附: