栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 数据结构 顺序表的实现——动态分配

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 数据结构 顺序表的实现——动态分配

#include
#include

#define ElemType int

#define InitSize 10
#define AddSize 10
#define true 1
#define false 0

typedef int bool;

typedef struct {
    ElemType* data;
    int MaxSize;
    int length;
}SqList;

void InitList(SqList* L) {
    L->data = (ElemType*)malloc(InitSize * sizeof(ElemType));
    L->length =0;
    L->MaxSize = InitSize;
}

void IncreaseSize(SqList* L) {
    int* p = L->data;
    L->data = (ElemType*)malloc((L->MaxSize + AddSize) * sizeof(ElemType));
    L->MaxSize = L->MaxSize + AddSize;
    for (int i = 0; i < L->length; i++) {
        L->data[i] = p[i];
    }
    free(p);
}


void PrintList(SqList L) {
    for (int i = 0; i < L.length; i++) {
        if (i % 10 == 0 && i / 10 != 0) {
            printf("n");
        }
        printf("%d ", L.data[i]);
    }
}

bool ListInsert(SqList* L, int index, ElemType e) {
    if (L->length >= L->MaxSize) {
        IncreaseSize(L);
    }
    if (index<1 || index>L->length + 1) {
        return false;
    }
    for (int i = L->length; i >= index; i--) {
        L->data[i] = L->data[i - 1];
    }
    L->data[index - 1] = e;
    L->length++;
    return true;
}

bool ListDelete(SqList* L, int index, ElemType* e) {
    if (index<1 || index>L->length) {
        return false;
    }
    *e = L->data[index - 1];
    for (int i = index; i < L->length; i++) {
        L->data[i - 1] = L->data[i];
    }
    L->length--;
    return true;
}

bool GetElem(SqList L, int index, int* e) {
    if (index<1 || index>L.length) {
        return false;
    }
    *e = L.data[index - 1];
    return true;
}

bool LocateElem(SqList L, int e, int* index) {
    for (int i = 0; i < L.length; i++) {
        if (e == L.data[i]) {
            *index = i+1;
            return true;
        }
    }
    return false;
}

bool ModifyElem(SqList* L, int index, int e) {
    if (index<1 || index>L->length) {
        return false;
    }
    L->data[index - 1] = e;
    return true;
}


int main() {
    SqList L;
    InitList(&L);

    L.length = 10;
    for (int i = 0; i < 10; i++) {
        L.data[i] = 1;
    }

    ListInsert(&L, 5, 9);
    PrintList(L);
    printf("%d", L.MaxSize);

    ElemType e;
    ListDelete(&L, 6, &e);
    PrintList(L);

    ModifyElem(&L, 3, 12);
    PrintList(L);

    return 0;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号