找遍了,用不惯别人的东西.

来源:互联网 发布:电视直播软件 电脑 编辑:程序博客网 时间:2024/05/16 23:35

 

c_link_list.h

Code:
  1. #ifndef C_LINK_LIST_H   
  2. #define C_LINK_LIST_H   
  3.   
  4. #include <stdlib.h>   
  5.   
  6. typedef struct LNODE LNode;   
  7.   
  8. //节点结构   
  9. struct LNODE   
  10. {   
  11.  LNode* previous;   
  12.  void* data;   
  13.  LNode* next;   
  14. };   
  15.   
  16. //操作函数   
  17. LNode* LNodeInit(void);   
  18. LNode* LNodeInsert(LNode* iterative, void* newdate);   
  19. LNode* LNodeErase(LNode* iterative);   
  20. int LNodeSize(LNode* iterative);   
  21. LNode* LNodeNext(LNode* iterative);   
  22. LNode* LNodePrev(LNode* iterative);   
  23. void LNodePushBack(LNode* iterative, void* newdate);   
  24. #endif  

c_link_list.c

Code:
  1. #include "c_link_list.h"   
  2.   
  3. LNode* LNodeInit(void)   
  4. {   
  5.     LNode *this, *next;   
  6.     this = (LNode*)malloc(sizeof(struct LNODE));   
  7.     next = (LNode*)malloc(sizeof(struct LNODE));   
  8.        
  9.     this->previous = NULL;   
  10.     this->data = NULL;   
  11.     this->next = next;   
  12.        
  13.     next->previous = this;   
  14.     next->data = NULL;   
  15.     next->next = NULL;   
  16.        
  17.     return this;   
  18. }   
  19.   
  20. LNode* LNodeNext(LNode* iterative)   
  21. {   
  22.     if (iterative->next!=NULL)   
  23.     {   
  24.         iterative = iterative->next;   
  25.     }   
  26.     return iterative;   
  27. }   
  28.   
  29. LNode* LNodePrev(LNode* iterative)   
  30. {   
  31.     if (iterative->previous!=NULL)   
  32.     {   
  33.         iterative = iterative->previous;   
  34.     }   
  35.     return iterative;   
  36. }   
  37.   
  38. LNode* LNodeInsert(LNode* iterative, void* newdate)   
  39. {   
  40.   
  41.     LNode* newn;   
  42.     newn = (LNode*)malloc(sizeof(struct LNODE));   
  43.        
  44.     newn->previous = iterative;   
  45.     newn->data = newdate;   
  46.     newn->next = iterative->next;   
  47.                      newn->next->previous = newn;      
  48.     iterative->next = newn;   
  49.   
  50.     return newn;   
  51. }   
  52.   
  53. LNode* LNodeErase(LNode* iterative)   
  54. {   
  55.     LNode* niterative;   
  56.        
  57.     iterative->previous->next = iterative->next;   
  58.        
  59.     iterative->next->previous = iterative->previous;   
  60.        
  61.     niterative = iterative->previous;   
  62.        
  63.     free(iterative);   
  64.     iterative = niterative;    
  65.        
  66.     return iterative;   
  67. }   
  68.   
  69. int LNodeSize(LNode* iterative)   
  70. {   
  71.     int i;   
  72.     for (; iterative->previous!=NULL; iterative=LNodePrev(iterative));   
  73.            
  74.     for (i=0, iterative=LNodeNext(iterative); iterative->next!=NULL; iterative=LNodeNext(iterative))   
  75.     {   
  76.         i++;   
  77.     }   
  78.        
  79.     return i;   
  80. }   
  81.   
  82. void LNodePushBack(LNode* iterative, void* newdate)   
  83. {   
  84.     for (iterative=LNodeNext(iterative); iterative->next!=NULL; iterative=LNodeNext(iterative));   
  85.     iterative = LNodePrev(iterative);   
  86.     LNodeInsert(iterative, newdate);   
  87. }  

写得有点乱~~~

原创粉丝点击