zoukankan      html  css  js  c++  java
  • 顺序表

    线性表:由同类数据元素构成的有序序列的线性结构

    实现方式分两种:顺序存储实现(ArrayList)和链式存储实现(LinkList)

    顺序表

    0、结构初始化

    顺序表结构如图:

    struct ListNode {
        ElementType Data[MaxSize];  //定义一个大小为MaxSize的数组
        int Last;                   //最后一个元素所在的位置
    };
    

    1、建立(空顺序表)

    struct ListNode* MakeEmpty() {
        struct ListNode* P;
    
        P=(struct ListNode*)malloc(sizeof(struct ListNode));
        P->Last=-1;
        return p;
    }
    

    2、查找

    //找不到则返回-1,找到则返回i
    int Find(ElementType x,struct ListNode* P) {
        int i=0;
    
        while (i<=P->Last&&P->Data[i]!=x) i++;
        if (i>P->Last)
            return -1;
        else
            return i;
    }
    

    3、插入

    图解如下:

    //第 i (1≤i≤n+1)个位置上插入一个值为X的新元素
    //即在下标为i-1位置上,插入元素x
    void Insert(ElementType x,int i,struct ListNode* P) {
        int j;
    
        //判断表空间是否已满
        if (p->Last==MaxSize-1) return ;
        //检查插入合法性
        if (i<1 || i>p->Last+2) return ;
    
        //数据往后挪,然后再插入
        for (j=p->Last;j>=i-1;j--) {
            p->Data[j+1]=p->Data[j];
        }
        p->Data[i-1]=x;
        p->Last++;
    }
    

    4、删除

    图解如下:

    //删除表的第 i (1≤i≤n)个位置上的元素
    //即删除下标为i-1位置的元素
    void Delete(int i,struct ListNode* p) {
        int j;
    
        //判断元素是否存在
        if (i<1 || i>p->Last+1) return ;
    
        for (j=i-1;j<p->Last;j++) {
            p->Data[j]=p->Data[j+1];
        }
        p->Last--;
    }
    
  • 相关阅读:
    【cf1247E】E. Rock Is Push(dp+二分)
    【cf1245F】F. Daniel and Spring Cleaning(数位dp)
    【cf1243D】D.0-1 MST(set+均摊复杂度分析)
    [CF1201D] Treasure Hunting
    [CF1211C] Ice Cream
    [CF1213E] Two Small Strings
    [CF1219G] Harvester
    [CF1223D] Sequence Sorting
    [CF1231E] Middle-Out
    [CF1244E] Minimizing Difference
  • 原文地址:https://www.cnblogs.com/WakingUp/p/8543386.html
Copyright © 2011-2022 走看看