struct LinkListNode{
int data;
struct LinkListNode *nextptr;
};
LinkListNode *CreatNode(void){
LinkListNode *tempNode;
tempNode = (LinkListNode *)malloc(sizeof(LinkListNode));
return tempNode;
}
LinkListNode *InserNode(LinkListNode *first, LinkListNode *theNode, int data){
LinkListNode *inserNode;
inserNode = CreatNode();
inserNode->data = data;
inserNode->nextptr = NULL;
if(theNode == NULL){ // first node
inserNode->nextptr = first;
first = inserNode;
}
else{
if(theNode->nextptr== NULL){ // last node
theNode->nextptr=inserNode;
}
else{
inserNode->nextptr=theNode->nextptr;
theNode->nextptr = inserNode;
}
}
return(first);
}
int DeleteNode(LinkListNode *first, int Data){
LinkListNode *CurrentNodt, *PrevNode;
CurrentNodt = first;
PrevNode=0;
if(CurrentNodt == NULL)
return 0;
while(CurrentNodt){
// printf("%d ", CurrentNodt->data);
if(CurrentNodt->data == Data){
PrevNode->nextptr=CurrentNodt->nextptr;
free(CurrentNodt);
return 1;
}
PrevNode = CurrentNodt;
CurrentNodt = CurrentNodt->nextptr;
}
return 0;
}
LinkListNode *FindNode(LinkListNode *first, int data){
LinkListNode *CurrentNodt;
CurrentNodt = first;
while(CurrentNodt){
if(CurrentNodt->data == data)
return CurrentNodt;
CurrentNodt = CurrentNodt->nextptr;
}
return CurrentNodt;
}
void PrintNode(LinkListNode *first)
{
LinkListNode *CurrentNodt;
CurrentNodt = first;
printf("Node test :");
while(CurrentNodt){
printf("%x, %d ", CurrentNodt, CurrentNodt->data);
CurrentNodt = CurrentNodt->nextptr;
}
printf("\\n");
}
void CodeStudy
(
WORD *Argc,
char *Argv[]
)
{
struct LinkListNode *header, *NextNode;
header = (LinkListNode *)malloc(sizeof(struct LinkListNode));
NextNode = (LinkListNode *)malloc(sizeof(struct LinkListNode));
header->nextptr=NextNode;
header->data=-1;
NextNode->nextptr = NULL;
NextNode->data = 5;
InserNode(header, NextNode, 10);
InserNode(header, NextNode, 20);
PrintNode(header);
DeleteNode(header,10);
printf("Find node: %X \\n", FindNode(header, 20));
PrintNode(header);
free(header);
free(NextNode);
}