#include <stdio.h>
#include <malloc.h>
//the node
struct NodeN{
int data;
struct NodeN *next;
};
typedef struct NodeN *Node;
void init(Node *Lp);//为甚么不一样。*lp与l
void insert(Node L,int data);
int isExist(Node L,int data);//**************************
void del(Node L,int data);
void print(Node L);
void destroy(Node L);
Node search(Node L,int data);
Node locate(Node L,int data);
void init(Node *Lp) {
Node tmp = (struct NodeN *)malloc(sizeof(struct NodeN));
tmp->next = NULL; //empty linked list
tmp->data = -999; //first head
*Lp = tmp;//
return;
}
void insert(Node L,int data) {
Node tmp = (struct NodeN *) malloc(sizeof(struct NodeN));
tmp->data = data;
if(L->next == NULL) { // empty
tmp->next = NULL;
L->next = tmp;
} else {
Node p = locate(L,data);
tmp->next = p->next;
p->next = tmp;
}
}
void del(Node L,int data) {
Node tmp = search(L,data);//*************
Node del = tmp->next;
if(NULL != tmp) { //I find it****************
tmp->next = tmp->next->next;
free(del);
}
}
Node search(Node L,int data) {//***************
Node tmp = L;
while(tmp->next != NULL) {
if(tmp->next->data == data) {
return tmp;
}
tmp = tmp->next;
}
return NULL;
}
Node locate(Node L,int data) {//*********************
Node tmp = L;
while(tmp->next != NULL) {
if(tmp->next->data > data) {
return tmp;//*******
}
tmp = tmp->next;
}
return tmp;
}
void print(Node L) {
Node tmp = L->next;
while(tmp!=NULL) {
printf("data is %d\t",tmp->data);
printf("next address is %d",tmp->next);
printf("\n");
tmp = tmp->next;
}
}
void destroy(Node L) {
if(L->next!=NULL)
destroy(L->next);
free(L);
}
int main() {
Node L1;
init(&L1);
insert(L1,10);
insert(L1,5);
insert(L1,8);
del(L1,8);
print(L1);
return 0;
}
#include <malloc.h>
//the node
struct NodeN{
int data;
struct NodeN *next;
};
typedef struct NodeN *Node;
void init(Node *Lp);//为甚么不一样。*lp与l
void insert(Node L,int data);
int isExist(Node L,int data);//**************************
void del(Node L,int data);
void print(Node L);
void destroy(Node L);
Node search(Node L,int data);
Node locate(Node L,int data);
void init(Node *Lp) {
Node tmp = (struct NodeN *)malloc(sizeof(struct NodeN));
tmp->next = NULL; //empty linked list
tmp->data = -999; //first head
*Lp = tmp;//
return;
}
void insert(Node L,int data) {
Node tmp = (struct NodeN *) malloc(sizeof(struct NodeN));
tmp->data = data;
if(L->next == NULL) { // empty
tmp->next = NULL;
L->next = tmp;
} else {
Node p = locate(L,data);
tmp->next = p->next;
p->next = tmp;
}
}
void del(Node L,int data) {
Node tmp = search(L,data);//*************
Node del = tmp->next;
if(NULL != tmp) { //I find it****************
tmp->next = tmp->next->next;
free(del);
}
}
Node search(Node L,int data) {//***************
Node tmp = L;
while(tmp->next != NULL) {
if(tmp->next->data == data) {
return tmp;
}
tmp = tmp->next;
}
return NULL;
}
Node locate(Node L,int data) {//*********************
Node tmp = L;
while(tmp->next != NULL) {
if(tmp->next->data > data) {
return tmp;//*******
}
tmp = tmp->next;
}
return tmp;
}
void print(Node L) {
Node tmp = L->next;
while(tmp!=NULL) {
printf("data is %d\t",tmp->data);
printf("next address is %d",tmp->next);
printf("\n");
tmp = tmp->next;
}
}
void destroy(Node L) {
if(L->next!=NULL)
destroy(L->next);
free(L);
}
int main() {
Node L1;
init(&L1);
insert(L1,10);
insert(L1,5);
insert(L1,8);
del(L1,8);
print(L1);
return 0;
}