zoukankan      html  css  js  c++  java
  • *顺序表[数组法]

    基础结构:

    #define MAXSIZE 100
    typedef struct seqlist
    {
        int List[MAXSIZE];
        int length;
    }SeqList;

     模型建立之后,就可以创建一个实在的东西

    SeqList L;

    现在需要对线性表进行初始化操作,这里用的是把length置为0。

    void InitList(SeqList &L)
    {
        L.length=0;
    }

    插入操作

    主要有三个部分
    [1] 插入之前,进行判定。这个判定又分两种情况:<1>插入元素的位置是否合法? 这里,合理的范围是在[1,L->length+1]之间,比如,在第5个位置插入,这里指的是序号。<2>线性表是否已满 ?如果表已满,就不能再进行插入操作,判定为:L.length>=MAXSIZE

    if(i<1 || i>L.length+1)
        {
            cout<<"超出位置范围"<<endl;
            return -1;
        }
        else if(L.length>=MAXSIZE)
        {
            cout<<"表已满"<<endl;
            return -1;
        }

    [2]移动数据。对于插入来说,是先从后面移动,直到位置i。

    借用一个变量j进行移动,这里序号和编号就缠绕在一起。

    for(j=L.length;j>=i;j--) /*元素移动*/
        L.List[j]=L.List[j-1];

    [3]将元素赋值,最后将length+1;

    int InsertElem(SeqList &L,int i,int e)
    {
        int j;
        if(i<1 || i>L.length+1)
        {
            cout<<"超出位置范围"<<endl;
            return -1;
        }
        else if(L.length>=MAXSIZE)
        {
            cout<<"表已满"<<endl;
            return -1;
        }
        for(j=L.length;j>=i;j--) /*元素移动*/
        L.List[j]=L.List[j-1];
        
        L.List[i-1]=e;
        L.length++; /*插入数据后,不能忘记将length+1*/
        return 0;
    }

    删除操作:

    和插入类似,也需要进行几步操作, [1] 判定范围  [2]删除操作 [3]线性表长度减1;

    int DeleteList(SeqList &L,int i,int *e)
    {
        int j;
        if(L.length<=0) /*线性表为空*/
            return -1;
        else if(i<1 || i>L.length) /*超越范围*/
            return -1;
        *e=L.List[i-1];
        for(j=i;j<=L.length-1;j++)
            L.List[j-1]=L.List[j];
        L.length--;/*线性表长度减1*/
        return 0;
    }

    for(j=i;j<=L.length-1;j++),在这一句中,经过计算,如果删除末位的元素,则不会产生移动,而只执行L.length--
    此外,判定条件也可以合并:

    if(i<1 || i>L.Length || L.Length<=0)
            return -1;
  • 相关阅读:
    【水】希望之花
    如何不用狄利克雷卷积证明莫比乌斯函数性质二
    【数学】gcd
    挂分宝典
    [luogu P6042]「ACOI2020」学园祭 题解
    [luogu P6041]「ACOI2020」布丁暗杀计划 题解
    11.19模拟
    「CSP-S2020」题解
    11.11模拟
    「洛谷P1445」樱花
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5240725.html
Copyright © 2011-2022 走看看