#include <stdio.h>
#include <stdlib.h>
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("NULL\n");
}
int main() {
printf("结构体指针占用字节:%d\n",sizeof(Node*));
printf("结构体占用字节:%d\n",sizeof(Node));
printf("%d\n",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;
}
09-14
306

07-03
483

11-20
1376

05-01
724
