• 数据结构笔记——线性表抽象数据类型、顺序表的插入


    InitList( *List )             初始化线性表,创建一个空的线性表List
    InsertElement( *List,index ,elem )    在线性表List的下标index中插入elem
    DeletElement( *List, index, *elem)    删除线性表中第i个元素,并返回删除元素的指针
    GetLength( *List )          获得线性表的长度

    顺序表:

    1、 定义线性表的最大存储空间

    2、线性表里需要有统一类型的元素

    typed int ElementType;相当于给int起了个别名叫ElementType

    typedef  struct  {

        int id;

        char *name;

    }ElementType;

    3、定义顺序表结构

    typedef struct  {

        ElementType datas [MAX_SIZE];   元素集合,有限个

        int length;   长度

    }

        顺序存储结构

    a1  a2  a3.....位置从  1  开始

    0    1     2.....下标 ,从 0 开始

    2019.10.28  顺序表插入算法

    向顺序表中的index下标处插入一个元素

    1、验证插入后的元素空间是否超过MAX_SIZE

    2、index 的值是否合法  [ 0 , MAX_SIZE - 1 ] 

    3、插入的index应在lengh之内

    4、从第length-1个下标开始,前面一个元素赋值给后面一个元素

    bool ListInsert(SeqList * &L, int i, ElemType e)
    {
        int j;
        if(i < 1 || i > L->length + 1 )
        {
            return false;
        }
        
        i--;
        
        for(j = L->length; j > i; j--)  //把长度 length的值赋给 j,如果 j大于要插入的下标 i,则循环,并把前一个值赋给后一个值
            L->data[j] = L->data[j - 1];
            
        L->data[i] = e;      //进行到下标为 i时,将 e赋给下标为 i的那个数
        L->length++;         //这个数组的长度加一
        
        return true;
    }

     另一种写法!

     if ( seqList.length + 1 >= MAX_SIZE )
        {
            printf("数组满,插入失败");
            return;
        }
    
        if( index < 0 || index > MAX_SIZE )
        {
            printf("只能在规定的范围内插入:( 0 ,%d ),MAX_SIZE-1");
            return;
        }
    
        if( index > SeqList -> length )
        {
            printf("下标越界");
            return;
        }
    
        int i;
    
        for( i = SeqList->length - 1; i >= index; i-- )
        {
            SeqList->datas[i + 1] = SeqList->datas[i];
        }
        //将要插入的值赋给index
        SeqList->datas[index] = element;
        //顺序表的长度加一
        SeqList->length++;

     

  • 相关阅读:
    Android课程---Activity的跳转与传值(转自网上)
    Android课程---Activity中保存和恢复用户状态
    Android课程---Activity 的生命周期
    Android课程---Activity的创建
    初学JAVA随记——练习写代码(8种数据类型)
    资料——UTF-8
    资料——ASCII码
    初学JAVA随记——8bit(1byte)的取值范围是+127到—128
    初学JAVA随记——变量与常量
    进制转换
  • 原文地址:https://www.cnblogs.com/18191xq/p/11745750.html
Copyright © 2020-2023  润新知