美文网首页
数据结构---顺序表

数据结构---顺序表

作者: Bean_Nan | 来源:发表于2017-04-15 21:42 被阅读0次

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

    #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;
    }
    

    相关文章

      网友评论

          本文标题:数据结构---顺序表

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