数据结构---顺序表

插入,删除,扩容,清空内存

#include <stdio.h>
#include <malloc.h>

#define OK 1
#define ERROR 0

typedef struct Vector {
    int size, length;
    int *data;
}Vector;

void init (Vector *vector, int size) {
    vector->size = size;
    vector->length = 0;
    vector->data = (int *)malloc(sizeof(int) * size);
}

int insert(Vector *vector, int loc, int value) {
    if (loc < 0 || loc > vector->length) {
        return ERROR;
    }
    if (vector->length >= vector->size) {
        expand(vector);
    }
    for (int i = vector->length; i > loc; i--) {
        vector->data[i] = vector->data[i - 1];
    }
    vector->data[loc] = value;
    vector->length++;

    return OK;
}

int delete(Vector *vector, int index) {
    if (index < 0 || index >= vector->length) {
        return ERROR;
    }
    for (int i = index; i < vector->length; i++) {
        vector->data[i - 1] = vector->data[i];
    }
    vector->length--;

    return OK;
}

void expand(Vector *vector) {
    int *old_data = vector->data;
    vector->size = vector->size * 2;
    vector->data = (int *)malloc(sizeof(int) * vector->size);

    for (int i = 0; i < vector->length; i++) {
        vector->data[i] = old_data[i];
    }

    free(old_data);
}

void clear(Vector *vector) {
    free(vector->data);
    free(vector);
}

int main() {
    printf("Hello, World!\n");
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容