#include#include typedef struct Node{ int data; struct Node* next; }Node; Node* initList(){ struct Node* List=(struct Node*)malloc(sizeof(Node)); List->data=0; List->next=List; return List; } void headInsert(Node* List,int data){ Node* head=List; Node* node=(Node*)malloc(sizeof(Node)); node->next=head->next; head->next=node; node->data=data; head->data++; } void tailInsert(Node* List,int data){ Node* head=List; Node* node=(Node*)malloc(sizeof(Node)); node->data=data; while(List->next!=head){ List=List->next; } node->next=head; List->next=node; head->data++; } //删除节点的第一种写法 void delete(Node* List,int data){ Node* head=List; Node* pre=List; List=List->next; while(List->data!=data){ List=List->next; pre=pre->next; } pre->next=List->next; free(List); head->data++; } //删除节点的第二种写法 void delete1(Node* List,int data){ Node* head=List; Node* pre=List; List=List->next; while(List!=head){ if(List->data==data){ break; } List=List->next; pre=pre->next; } pre->next=List->next; free(List); head->data++; } void printList(Node* List){ Node* head=List; List=List->next; while(List!=head){ printf("%d->t",List->data); List=List->next; } printf("NULLn"); } int main() { printf("结构体指针占用字节:%dn",sizeof(Node*)); printf("结构体占用字节:%dn",sizeof(Node)); printf("%dn",sizeof(double)); Node* list=initList(); headInsert(list,1); headInsert(list,2); tailInsert(list,3); tailInsert(list,4); delete(list,3); delete(list,4); headInsert(list,3); headInsert(list,5); headInsert(list,8); tailInsert(list,0); delete(list,8); delete(list,3); delete1(list,0); printList(list); return 0; }