当前位置:   article > 正文

删除顺序表中所有值为x的结点_设计一个算法,删除顺序表中值为x的所有结点

设计一个算法,删除顺序表中值为x的所有结点

顺序表定义:

  1. typedef struct
  2. {
  3. DataType list[MaxSize];
  4. int length;
  5. }SeqList;

在顺序表的第i个位置插入元素:

  1. void ListInitiate(SeqList* L)
  2. {
  3. L->length = 0;
  4. }
  5. int Sqlist_insert(SeqList* L, int i, DataType x)
  6. {
  7. int j;
  8. if (L->length >= MaxSize)
  9. return 0;
  10. else if (i<1 || i>L->length + 1)
  11. return 0;
  12. else
  13. {
  14. for (j = L->length; j >= i; j--)
  15. L->list[j] = L->list[j - 1];
  16. L->list[i - 1] = x;
  17. L->length++;
  18. return 1;
  19. }
  20. }

删除顺序表中所有值为x的结点:

  1. void ListDelete(SeqList *L, int x)
  2. {
  3. int k = 0;
  4. for (int i = 0; i < L->length; i++)
  5. {
  6. if (L->list[i] == x)
  7. k++;
  8. else
  9. L->list[i - k] = L->list[i];
  10. }
  11. L->length -= k;
  12. }

主函数设计测试:

  1. #include<stdio.h>
  2. #define MaxSize 100
  3. #define MaxLen 10
  4. typedef int DataType;
  5. #include"SeqList.h";
  6. int main()
  7. {
  8. SeqList L;
  9. int i, x, e;
  10. ListInitiate(&L);
  11. Sqlist_insert(&L, 1, 2);
  12. Sqlist_insert(&L, 2, 3);
  13. Sqlist_insert(&L, 3, 5);
  14. Sqlist_insert(&L, 4, 4);
  15. Sqlist_insert(&L, 5, 6);
  16. Sqlist_insert(&L, 6, 1);
  17. Sqlist_insert(&L, 7, 4);
  18. Sqlist_insert(&L, 8, 7);
  19. Sqlist_insert(&L, 9, 4);
  20. Sqlist_insert(&L, 10, 0);
  21. for (i = 0; i < L.length; i++)
  22. {
  23. printf("%d ", L.list[i]);
  24. }
  25. printf("\n");
  26. ListDelete(&L, 4);
  27. for (i = 0; i < L.length; i++)
  28. {
  29. printf("%d ", L.list[i]);
  30. }
  31. }

测试结果:

 

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

闽ICP备14008679号