线性表

Posted yuhui-snail

tags:

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

线性表定义:由零个或多个数据元素组成的有限序列。  是从1开始的

初始化的线性表结构Sqlist和一些宏参数:

#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20
typedef int ElemType;
typedef struct {
    ElemType data[MAXSIZE];
    int length;
}Sqlist;

typedef int Status;

 

 

//获取元素
Status GetElem(Sqlist *L,int i,ElemType e){
    if (i<1 || L->length==0 || i>L->length) {
        return 0;
    }
    e = L->data[i-1];
    return 0;
}
//插入元素
Status ListInsert(Sqlist *L,int i,ElemType e){
    int k;
    if (L->length == MAXSIZE) {
        return ERROR;
    }
    if (i<1 || i> L->length+1) {
        return ERROR;
    }
    if (i<=L->length) {//都需要遍历
        for (k = L-> length-1; k>=i-1; k--) {
            L->data[k+1] =L->data[k];
        }
    }
    L->data[i-1] = e;
    L->length++;
    return FALSE;
    
}
//删除元素
Status ListDelete(Sqlist*L,int i,ElemType *e){
    int k;
    if (L->length == 0) {
        return ERROR;
    }
    if (i<1 || i>L->length) {
        return ERROR;
    }
    *e = L->data[i-1];
    if (i<L->length) { //都需要遍历
        for (k = i; k<L->length; k++) {
            L->data[k-1] = L->data[k];
        }
    }
    
    L->length--;
    
    return OK;
}

线性表的插入和删除都需要遍历一次,从而时间复杂度是O(n),效率也是比较差的。 


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

如何在android中的地图片段内中心线性布局?

垂直线性布局中的多个片段

线性表的插入和删除操作代码(C语言)

在android中的类内的对话框片段的线性布局中添加textview

数据结构学习笔记二线性表---顺序表篇(画图详解+代码实现)

数据结构学习笔记二线性表---顺序表篇(画图详解+代码实现)