数据结构线性表——顺序表

146 阅读2分钟

作为数据结构初学者的我,昨天学习了线性表,现来总结一下

首先顺序表顾名思义 像线一样串联在一起的数据存储称为线性表

首先就是建立一个表了吧 #include<stdio.h> #define maxlen 100

   typedef struct {
       int data[maxlen];
       int length;
   }List;  //定义一个名为List的结构 其中包含一个数组以及表长
   void first(List L){
          L.length =0;
   } //用结构体List定义一个名为L的顺序表 并对其进行初始化 是表长为0

这样一个初始的顺序表就建立完成了 然后就要对其进行操作 1.添加数据

    void addList(List &L,int i,int e){
        if(i<0||i>L.length||L.length==maxlen){
             printf("添加失败");
        }  //在这里对插入位置i进行了判断 i的位置不能不在表的范围以及表满的情况不能添加新的元素
        for(int a=L.length-1;a>=i;a--){
             L.data[a+1]=L.data[a];
        }
       L.length++;
    }  //对插入位置i以后的元素进行了遍历 使得每一个元素都向后移动一位

2.删除数据(按位删除)

    void deleteList(List &L,int i,int &e){                                 
        if(i<0||i>L.length){                                                   
             printf("删除失败");
        }   //同添加一样对删除数据位置i进行判断
        for(int a=i;a<L.length-1;a++){
             L.data[a]=L.data[a+1];
        }
       L.length--;
    }  //对删除位置i以后进行遍历 使得每一位元素向前移动一位

删除元素(按值删除)

     void deleteList(List &L,int i,int &e){
         int a,b,c;
         for( a=0;a<L.length-1;a++){
              e = L.data[a];
              if(e ==i){
                 b = a;
                 printf("被删除的元素是:");
                   scanf("%d",e);
                 printf("被删除元素位置是:");
                   scanf("%d",b);
              }  
              for(c=L.length-1;c>=b;c++){
                   L.data[c]=L.data[c+1];
              }
            L.length--;
         }
     }

3.查询数据 (按位查询)

    void checkList(List L,int i,int &e){
        if(i<0||i>L.length){
             printf("查询失败");
        }
        e = L.data[i];
    }   //对查询位置元素进行查询 直接返回其值即可

查询数据(按值查询)

     void checkList(List L,int i,int &e){
         int q,w;
         for(q=0;q<L.length-1;q++){
              e = L.data[q];
              if(e==i){
                 w=q;
              }
              printf("查询数据的位置是:");
                 scanf("%d",w);
         }
     }
     

那么说到线性表,肯定会联想到他有什么优缺点呢

  优点:判断位置关系时其物理位置关系就是其逻辑位置关系——物理上左右逻辑上前驱后继
        存储数据时可以随机存储   
        简称:地址连续,类型相同,一次存放,随机存取
       
  缺点:在添加删除操作时需要将其位置后的每一个元素都移动
        在建立表的时候不确定要建多大的表从而导致资源浪费,空间利用率低