当前位置:   article > 正文

2.22 作业

2.22 作业

顺序表

运行结果

fun.c

  1. #include "fun.h"
  2. seq_p create_seq_list()
  3. {
  4. seq_p L = (seq_p)malloc(sizeof(seq_list));
  5. if(L==NULL)
  6. {
  7. printf("空间申请失败\n");
  8. return NULL;
  9. }
  10. L->len = 0;
  11. bzero(L,sizeof(L->data));
  12. return L;
  13. }
  14. int seq_empty(seq_p L)
  15. {
  16. if(L==NULL)
  17. {
  18. return -1;
  19. }
  20. return L->len==0?1:0;
  21. }
  22. int seq_full(seq_p L)
  23. {
  24. if(L==NULL)
  25. {
  26. return -1;
  27. }
  28. return L->len==MAX?1:0;
  29. }
  30. void insert_head(seq_p L,int data)
  31. {
  32. if(L==NULL)
  33. {
  34. printf("入参为空,请检查\n");
  35. return;
  36. }
  37. if(seq_full(L))
  38. {
  39. printf("表已满,不能插入\n");
  40. return;
  41. }
  42. for(int i=L->len-1;i>=0;i--)
  43. {
  44. L->data[i+1] = L->data[i];
  45. }
  46. L->data[0]=data;
  47. L->len++;
  48. }
  49. void insert_tail(seq_p L,int value)
  50. {
  51. if(L==NULL)
  52. {
  53. printf("入参为空,请检查\n");
  54. return;
  55. }
  56. if(seq_full(L))
  57. {
  58. printf("表已满,不能插入\n");
  59. return;
  60. }
  61. L->data[L->len]=value;
  62. L->len++;
  63. }
  64. void out_put(seq_p L)
  65. {
  66. for(int i=0;i<L->len;i++)
  67. {
  68. printf("%d\n",L->data[i]);
  69. }
  70. }
  71. void insert_pos(seq_p L,int value,int pos)
  72. {
  73. if(L==NULL)
  74. {
  75. printf("入参为空,请检查\n");
  76. return;
  77. }
  78. if(seq_full(L))
  79. {
  80. printf("表已满,不能插入\n");
  81. return;
  82. }
  83. if(pos>L->len||pos<0)
  84. {
  85. printf("位置不合理");
  86. return;
  87. }
  88. for(int i=L->len-1;i>=pos;i--)
  89. {
  90. L->data[i+1]=L->data[i];
  91. }
  92. L->data[pos]=value;
  93. L->len++;
  94. }
  95. void del_pos(seq_p L,int pos)
  96. {
  97. if(L==NULL)
  98. {
  99. printf("入参为空,请检查\n");
  100. return;
  101. }
  102. if(seq_empty(L))
  103. {
  104. printf("表为空,无需删除\n");
  105. return;
  106. }
  107. for(int i=pos;i<L->len-1;i++)
  108. {
  109. L->data[i]=L->data[i+1];
  110. }
  111. L->len--;
  112. }
  113. void del(seq_p L)
  114. {
  115. if(L==NULL){return;}
  116. if(seq_empty(L)){return;}
  117. if(L->len==1){printf("只有一个元素\n");return;}
  118. for(int i=0;i<L->len;i++)
  119. {
  120. for(int j=i+1;j<L->len;j++)
  121. {
  122. if(L->data[i]==L->data[j])
  123. {
  124. del_pos(L,j);
  125. j--;
  126. }
  127. }
  128. }
  129. }

fun.h

  1. #ifndef __SEQ_LIST_H__
  2. #define __SEQ_LIST_H__
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #define MAX 7
  7. typedef struct seq_list
  8. {
  9. int data[MAX];
  10. int len;
  11. }
  12. seq_list,*seq_p;
  13. seq_p create_seq_list();
  14. int seq_empty(seq_p L);//判满
  15. int seq_full(seq_p L);//判空
  16. void insert_head(seq_p L,int data);//头插
  17. void insert_tail(seq_p L,int value);//尾插
  18. void out_put(seq_p L);//输出
  19. void insert_pos(seq_p L,int value,int pos);//按下标插入
  20. void del_pos(seq_p L,int pos);//按下标删除
  21. void del(seq_p L);//去重
  22. #endif

main.c

  1. #include "fun.h"
  2. int main()
  3. {
  4. seq_p L = create_seq_list();
  5. insert_head(L,10);
  6. insert_head(L,20);
  7. insert_tail(L,20);
  8. insert_tail(L,30);
  9. out_put(L);
  10. putchar(10);
  11. insert_pos(L,50,2);
  12. out_put(L);
  13. putchar(10);
  14. del_pos(L,2);
  15. out_put(L);
  16. putchar(10);
  17. del(L);
  18. out_put(L);
  19. return 0;
  20. }

链表

  1. //尾插
  2. void insert_tail(link_p H,link_p T,datatype data)
  3. {
  4. if(T==NULL)
  5. {
  6. printf("入参为空,请检查\n");
  7. return;
  8. }
  9. link_p new = create_node(data);
  10. T->next=new;
  11. H->len++
  12. }
  13. //输出
  14. void out_put(link_p H)
  15. {
  16. for(int i=0;i<H->len;i++)
  17. {
  18. printf("%d\n",(H->next)->data);
  19. H->next=(H->next)->next;
  20. }
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/156059
推荐阅读
相关标签
  

闽ICP备14008679号