当前位置:   article > 正文

4-数据结构-顺序表的查找_顺序表中如何找到数据对应位置

顺序表中如何找到数据对应位置

说明:
顺序表的查找,分为按照位置查找,返回对应值和按照值查找,返回该值位置、

思路:

  1. getlist(sqlist &l,int k)为按位查找,返回具体数值。
  2. locatelist(sqlist &l,int k)按照值,去查找位置。

因为顺序表都是连续存放的,所以方便随机存取,只需遍历找值或者给出位置取数,便可存放值。

代码如下:

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #define initsize 10
  4. typedef struct //定义一个动态顺序表的结构体,并起别名为sqlist
  5. {
  6. int *data; //因为是动态数组,所以先定一个指针,表示数组,后面malloc动态分配即可
  7. int max;
  8. int length;
  9. }sqlist;
  10. int getlist(sqlist &l,int k)//按位查找,通过位置定值
  11. {
  12. if(k-1<1 || k-1>l.length)
  13. return 0;
  14. else
  15. return l.data[k-1];
  16. }
  17. int locatelist(sqlist &l,int k)//按值查找,然后从头到尾,进行遍历,直到找到为止
  18. {
  19. int i;
  20. for(i=0;i<l.length;i++)
  21. {
  22. if(l.data[i]==k)
  23. return i-1;
  24. }
  25. }
  26. void initlist(sqlist &l)//初始化顺序表操作,并创建动态数组
  27. {
  28. l.data=(int*)malloc(sizeof(int)*initsize);
  29. l.length=0;
  30. l.max=initsize;
  31. }
  32. int main()
  33. {
  34. sqlist l;
  35. initlist(l);
  36. //给顺序表赋初始值
  37. int i;
  38. printf("max=%d\n",l.max);
  39. for(i=0;i<5;i++)
  40. {
  41. l.data[i]=i+1;
  42. l.length++;
  43. printf("%d ",l.data[i]) ;
  44. }
  45. printf("\n按位查找为%d\n",getlist(l,3));
  46. printf("按值查找为%d\n",getlist(l,3));
  47. return 0;
  48. }

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

闽ICP备14008679号