LinList.h
上传用户:tinajin
上传日期:2014-01-19
资源大小:136k
文件大小:1k
源码类别:

操作系统开发

开发平台:

C/C++

  1. typedef struct Node
  2. {
  3. LinDataType data;
  4. struct Node *next;
  5. }
  6. SLNode;
  7. void LinListInitiate(SLNode **head) //初始化
  8. {
  9. if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL)exit(1);
  10. (*head)->next=NULL;
  11. }
  12. int LinListLength(SLNode *head)
  13. {
  14. SLNode *p =head;
  15. int size=0;
  16. while(p->next!=NULL)
  17. {
  18. p=p->next;
  19. size++;
  20. }
  21. return size;
  22. }
  23. int LinListInsert(SLNode *head,int i,LinDataType x)
  24. {
  25. SLNode *p,*q;
  26. int j;
  27. p=head;
  28. j=-1;
  29. while(p->next!=NULL&&j<i-1)
  30. {
  31. p=p->next;
  32. j++;
  33. }
  34. if(j!=i-1)
  35. {
  36. printf("插入位置参数错!n");
  37. return 0;
  38. }
  39. if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(0);
  40. q->data=x;
  41. q->next=p->next;
  42. p->next=q;
  43. return 1;
  44. }
  45. int LinListDelete(SLNode *head,int i,LinDataType *x)
  46. {
  47. SLNode *p,*s;
  48. int j;
  49. p=head;
  50. j=-1;
  51. while(p->next!=NULL&&p->next->next!=NULL&&j<i-1)
  52. {
  53. p=p->next;
  54. j++;
  55. }
  56. if(j!=i-1)
  57. {
  58. printf("删除位置错!n");
  59. return 0;
  60. }
  61. s=p->next;
  62. *x=s->data;
  63. p->next=p->next->next;
  64. free(s);
  65. return 1;
  66. }
  67. int LinListGet(SLNode *head,int i,LinDataType *x)
  68. {
  69. SLNode *p;
  70. int j ;
  71. p=head;
  72. j=-1;
  73. while(p->next!=NULL&&j<i)
  74. {
  75. p=p->next;
  76. j++;
  77. }
  78. if(j!=i)
  79. {
  80. printf("取元素位置参数错!n");
  81. return 0;
  82. }
  83. *x=p->data;
  84. return 1;
  85. }
  86. void LinDestroy(SLNode *head)
  87. {
  88. SLNode *p,*p1;
  89. p=head;
  90. while(p!=NULL)
  91. {
  92. p1=p;
  93. p=p->next;
  94. free(p1);
  95. }
  96. }