#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
typedef struct Node{
int data;
struct Node*next;
}Node;
Node* initList(){
Node* L = (Node*)malloc(sizeof(Node));
L->data = 0;
L->next = 0;
return L;
}
void headInsert(Node* L, int data){
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = L->next;
L->next = node;
L->data++;//记录链表中的元素个数
}
void tailInsert(Node* L, int data){
Node* n = L;
Node* node = (Node*)malloc(sizeof(Node));
node->data = data;
while(n->next){
n = n->next;
}
node->next = n->next;
n->next = node;
L->data++;
}
int delete(Node* L, int data){
Node* prenode = L;
Node* node = L->next;
while(node){
if(node->data == data){
prenode->next = node->next;
free(node);
return TRUE;
}
prenode = node;
node = node->next;
}
return FALSE;
}
void printList(Node* L){
Node* node = L->next;
while(node){
printf(" %d ", node->data);
node= node->next;
}
printf("NULL\n");
}
int main()
{
Node* L = initList();
headInsert(L, 4);
headInsert(L, 3);
hesdInsert(L, 2);
headInsert(L, 1);
tailInsert(L, 5);
delete(L, 3);
delete(L, 4);
printList(L);
return 0;
}