document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. struct LinkListNode{
  2.     int data;
  3.     struct LinkListNode *nextptr;
  4.    
  5. };
  6.  
  7. LinkListNode *CreatNode(void){
  8.     LinkListNode *tempNode;
  9.     tempNode = (LinkListNode *)malloc(sizeof(LinkListNode));
  10.     return tempNode;
  11. }
  12.  
  13. LinkListNode *InserNode(LinkListNode *first, LinkListNode *theNode, int data){
  14.     LinkListNode *inserNode;
  15.     inserNode = CreatNode();
  16.     inserNode->data = data;
  17.     inserNode->nextptr = NULL;
  18.     if(theNode == NULL){ // first node
  19.         inserNode->nextptr = first;
  20.         first = inserNode;
  21.         }
  22.     else{
  23.         if(theNode->nextptr== NULL){ // last node
  24.             theNode->nextptr=inserNode;
  25.             }
  26.         else{
  27.             inserNode->nextptr=theNode->nextptr;
  28.             theNode->nextptr = inserNode;
  29.             }
  30.         }
  31.    
  32.     return(first); 
  33. }
  34.  
  35. int DeleteNode(LinkListNode *first, int Data){
  36.     LinkListNode *CurrentNodt, *PrevNode;
  37.     CurrentNodt = first;
  38.     PrevNode=0;
  39.    
  40.     if(CurrentNodt == NULL)
  41.         return 0;
  42.  
  43.     while(CurrentNodt){
  44.         // printf("%d ", CurrentNodt->data);
  45.         if(CurrentNodt->data == Data){
  46.             PrevNode->nextptr=CurrentNodt->nextptr;
  47.             free(CurrentNodt);
  48.             return 1;
  49.             }
  50.         PrevNode = CurrentNodt;
  51.         CurrentNodt = CurrentNodt->nextptr;
  52.         }
  53.    
  54.     return 0;  
  55. }
  56.  
  57. LinkListNode *FindNode(LinkListNode *first, int data){
  58.     LinkListNode *CurrentNodt;
  59.     CurrentNodt = first;
  60.     while(CurrentNodt){
  61.         if(CurrentNodt->data == data)
  62.             return CurrentNodt;
  63.         CurrentNodt = CurrentNodt->nextptr;
  64.         }
  65.    
  66.     return CurrentNodt;
  67. }
  68.  
  69. void PrintNode(LinkListNode *first)
  70. {
  71.     LinkListNode *CurrentNodt;
  72.     CurrentNodt = first;
  73.  
  74.     printf("Node test :");
  75.  
  76.     while(CurrentNodt){
  77.         printf("%x, %d ", CurrentNodt, CurrentNodt->data);
  78.         CurrentNodt = CurrentNodt->nextptr;
  79.         }
  80.  
  81.     printf("\\n");
  82.  
  83. }
  84.  
  85.  
  86. void CodeStudy
  87. (
  88.    WORD *Argc,
  89.    char *Argv[]
  90. )
  91. {
  92.     struct LinkListNode *header, *NextNode;
  93.     header = (LinkListNode *)malloc(sizeof(struct LinkListNode));
  94.     NextNode = (LinkListNode *)malloc(sizeof(struct LinkListNode));
  95.     header->nextptr=NextNode;
  96.     header->data=-1;
  97.     NextNode->nextptr = NULL;
  98.     NextNode->data = 5;
  99.     InserNode(header, NextNode, 10);
  100.     InserNode(header, NextNode, 20);
  101.     PrintNode(header);
  102.     DeleteNode(header,10);
  103.     printf("Find node: %X \\n", FindNode(header, 20));
  104.     PrintNode(header);
  105.     free(header);
  106.     free(NextNode);
  107. }
');