美文网首页
1. 线性结构

1. 线性结构

作者: 天不错啊 | 来源:发表于2020-06-16 22:15 被阅读0次

1 . ArrayList

// ArrarList
# include <stdio.h>

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

typedef int Status;
typedef int ElemType;
typedef struct{
    ElemType data[MAXSIZE];
    int length;
}ArrayList;

Status InitList(ArrayList *);
Status ListEmpty(ArrayList);
Status ClearList(ArrayList *);
Status GetElem(ArrayList, int, ElemType *);
Status ListInsert(ArrayList *, int, ElemType);
Status ListDelete(ArrayList *, int, ElemType *);
void ListPrint(ArrayList);

int main(){
        ArrayList list;
        InitList(&list);

        ListInsert(&list, 1, 10);
        ListInsert(&list, 2, 20);
        ListInsert(&list, 3, 30);
        ListInsert(&list, 4, 40);
        ListPrint(list);
        printf("-----------------------\n");

        int val;
        GetElem(list, 4, &val);
        printf("%d\n", val);
        printf("-----------------------\n");

        ListDelete(&list, 3, &val);
        printf("%d\n", val);
        printf("-----------------------\n");
        ListPrint(list);
        printf("-----------------------\n");

        ClearList(&list);
        ListPrint(list);
    return 0;
}

Status InitList(ArrayList * L){
    L->length = 0;
    return OK;
}

Status ClearList(ArrayList * L){
    for (int i = 0; i < L->length; i++) {
            i[L->data] = -1;
    }
    L->length = 0;
    return OK;
}

Status GetElem(ArrayList L, int i, ElemType * e){
    if(L.length == 0 || i < 1 || i > L.length){
        return ERROR;
    }

    *e = L.data[i-1];
    return OK;
}

Status ListInsert(ArrayList * L, int i, ElemType e){
    if(L->length == MAXSIZE){
        return ERROR;
    }

    if(i < 1 || i > L->length + 1){
        return ERROR;
    }

    // 从List尾 往i 移动交换位置
    if(i <= L->length){
        for(int k = L->length-1; k >= i - 1; k--){
            L->data[k+1] = L->data[k];
        }
    }
    L->data[i-1] = e;
    L->length++;

    return OK;
}

Status ListDelete(ArrayList * L, int i, ElemType * e){
    if(L->length == 0){
        return ERROR;
    }

    if(i < 1 || i > L ->length){
        return ERROR;
    }

    *e = L->data[i-1];
    if(i < L->length){
        for(int k = i; k < L->length; k++){
            L->data[k-1] = L->data[k];
        }
    }
    L->length--;
    return OK;
}


void ListPrint(ArrayList L){
    for (int i = 0; i < L.length; i++) {
        printf("%d ", i[L.data]);
    }
    printf("\n");
}

相关文章

  • 1. 线性结构

    1 . ArrayList

  • 重学数据结构 --- 分类+稀疏数组

    一、数据结构的分类 1. 数据结构两大类 线性结构和非线性结构 1) 线性结构 线性结构是最常见的数据结构,特点是...

  • 稀疏数组与队列

    1.数据结构包括:线性结构和非线性结构 1.1线性结构 线性结构为最常用的数据结构,其特点是数据元素之间存在一对一...

  • 数据结构-2.线性结构与非线性结构

    数据结构包括线性结构和非线性结构 1. 线性结构:特点是是数据与元素之间存在一对一线性关系,比如 a[0] = 1...

  • 第一章、绪论

    1.算法是求解问题的有限步骤。2.逻辑上把数据结构分为线性结构和非线性结构

  • 线性结构和非线性结构数据结构

    线性结构和非线性结构数据结构包括: 线性结构和非线性结构 线性结构l 线性结构作为最常用的数据结构.其特点是数据元...

  • 6.线性结构的切片操作

    目录1.线性结构介绍2.切片操作 1.线性结构特点 可迭代for ... inlen()可获取长度可通过下标访问可...

  • 数据结构与算法

    1.线性结构 线性结构和非线性结构主要看元素之间的关系,如果是一对一的关系则是线性表,不是一对一关系则是非线性表线...

  • 数据结构(二)线性表-(顺序表\链表)

    1.顺序表 将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)线性...

  • 数据结构(二) --数组和链表

    数据结构主要可以分为两大模块: 线性结构 非线性结构 本文主要开始讲线性结构。 什么是线性结构 线性结构,顾名思义...

网友评论

      本文标题:1. 线性结构

      本文链接:https://www.haomeiwen.com/subject/gsedxktx.html