#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node;
Node* initlist()
{
Node* head=(Node*)malloc(sizeof(Node));
head->data=0;
head->next=NULL;
}
void head_insert(Node* head,int data)
{
Node* node=(Node*)malloc(sizeof(Node));
node->data=data;
node->next=head->next;
head->next=node;
head->data++;
}
void tail_insert(Node* head,int data)
{
Node *list=head;
Node* node=(Node*)malloc(sizeof(Node));
node->next=NULL;
node->data=data;
head=head->next;
while(head->next!=NULL)
{
head=head->next;
}
head->next=node;
list->data++;
}
void delete_list(Node* head,int data)
{
Node *pre;
Node *current=head->next;
while(current)
{
if(current->data==data)
{
pre->next=current->next;
free(current);
break;
}
else
{
pre=current;
current=current->next;
}
}
head->data--;
}
void print_list(Node *head)
{
head=head->next;
while(head)
{
printf("%d ",head->data);
head=head->next;
}
printf("\n");
}
int main()
{
Node* list=initlist();
head_insert(list,1);
head_insert(list,2);
head_insert(list,3);
head_insert(list,4);
head_insert(list,5);
tail_insert(list,6);
tail_insert(list,7);
tail_insert(list,8);
tail_insert(list,9);
tail_insert(list,10);
print_list(list);
delete_list(list,5);
delete_list(list,6);
print_list(list);
return 0;
}
基本操作:
1. 增加
1.1头插法
新的节点指向开头的节点
1.2尾插法
最后的节点指向新的节点,新的节点指向NULL
2. 删除
删除节点的前面的节点指向删除元素后面的节点 释放删除元素的节点free