顺序表

Posted wakingup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表相关的知识,希望对你有一定的参考价值。

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

实现方式分两种:顺序存储实现(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--;
}






以上是关于顺序表的主要内容,如果未能解决你的问题,请参考以下文章

将数据从底部工作表对话框片段传递到片段

Android 在 FragmentPagerAdapter 中更改片段顺序

从底部工作表对话框片段中获取价值

关于代码片段的时间复杂度

Mysql Innodb 表碎片整理

片段(Java) | 机试题+算法思路+考点+代码解析 2023