当前位置:   article > 正文

数据结构之顺序表(C语言版)_c语言数据结构顺序表

c语言数据结构顺序表

注:以下只记录了静态顺序表的内容!写此博客其目的为记录学习的内容。本人仅为一名计算机小白,如有需改善之处,请大佬指正。

一、什么是顺序表

顺序表,顾名思义就是有许多数据元素按照顺序存储结构在存储在线性表中!其实就是这样:(表中含有i个小表情)

......

i

                                对应的下标:      0              1                2                3               4            ...     ...      i-1

即该顺序表的长度为i,也就是说顺序表的第i个元素对应的数组下标为i-1,因为顺序表通常使用一维数组来实现,以至于顺序表在他出生的那一刻就已经确定了他的长度,即顺序表的长度确定!

二、如何实现顺序表

1.顺序表的结构定义:

  1. #define M 520 //定义一个最多存储520个元素的顺序表
  2. typedef int DataList; //定义int型线性表
  3. typedef struct{ //创建结构体
  4. DataList data[M]; //用于存放数据元素的一维数组
  5. int length; //表长
  6. }SeqList;

2.初始化

  1. void InitList(SeqList *L){
  2. L->length = 0; //将表长初始化为0
  3. }

3.查找

(1)按值查找

  1. int Getnum(SeqList *L,Data num){
  2. for(int i=0;i<L->length;i++){
  3. if(L->data[i] == num)
  4. return i+1; //返回值所在的位置序号
  5. }
  6. return 0;
  7. }

(2)按位查找

  1. int Getlocate(SeqList *L,int i,Data *num){
  2. if(i<1||i>L->length){ //判断非法查找位置
  3. return 0;
  4. }else{
  5. *num = L->data[i-1];
  6. return 1;
  7. }
  8. }

4.插入操作

从最后一个元素开始一直到待插位置i,逐个往后移。

L->data[j] = L->data[j-1];

使第i个位置为空,将元素num填入其中即可。

完整算法实现

  1. //i为插入位置,num为待插元素
  2. int insert(SeqList *L,int i,Data num){
  3. if(L->length >= M||i<1||i>L->length+1){
  4. return 0;
  5. }
  6. int j;
  7. for(j = L->length;j>=i;j--){
  8. L->data[j] = L->data[j-1];
  9. L->data[i-1] = num;
  10. L->length++;
  11. }
  12. return 1;
  13. }

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

闽ICP备14008679号