美文网首页
线性表-顺序表

线性表-顺序表

作者: 六度Lavie | 来源:发表于2020-04-08 07:40 被阅读0次
    特点:

    1.顺序存储结构存储的线性表
    2.空间连续
    3.随机访问

    结构设计及初始化

    /// 顺序表结构设计
    typedef struct{
        Data *data;
        int length;
    } LinerTable;
    
    /// MARK: 初始化
    Statue initLinerTable(LinerTable *T) {
        T->data = malloc(sizeof(MAXSIZE));
        if (T->data == NULL) {
            return ERROR;
        }
        T->length = 0;
        return OK;
    }
    
    
    基本操作:
    找到位置.jpg

    增:
    1.空出位置
    2.节点位置赋值
    3.长度加1

    /// MARK: 增加L的第index位置的数据,L长度+1
    Statue insertLinerData(LinerTable *T, int index, Data a) {
        
        // 判断index合法性
        if(index < 1 || index > T->length+1) return ERROR;
        if(T->length >= MAXSIZE) return ERROR;
        
        //插入数据不在表尾,则先移动出空余位置
        if (index <= T->length) {
            for (int j = T->length - 1; j >= index - 1; j--) {
                T->data[j + 1] = T->data[j];
            }
        }
        //找到位置赋值
        T->data[index -1] = a;
        // 长度+1
        ++T->length;
        
        return OK;
    }
    

    删:

    删除位置.jpg

    后续元素整体前移一个位置,会直接将目标元素删除

    /// MARK: 删除L的第i个数据元素,L的长度减1
    Statue deleteLinerData(LinerTable *T, int index) {
        
        // 判断index的合法性
        if (index > T->length || index < 1) return ERROR;
        // 判断非空表
        if (T->length == 0) return ERROR;
        
        for (int j = index; j < T->length; j++) {
            T->data[j-1] = T->data[j];
        }
        // 长度-1
        T->length --;
        
        return OK;
    }
    


    指定位置查找

    /// MARK: 查
    Statue indexOfLinerData(LinerTable *T, int index, Data *a) {
        
        // 判断index的合法性
        if (index > T->length || index < 1) return ERROR;
        *a = T->data[index - 1];
        
        return OK;
    }
    

    遍历:

    /// MARK: 顺序输出
    Statue printfLinerData(LinerTable *T) {
        
        for (int i = 1; i < T->length + 1; i++) {
            printf("数据:%d", T->data[i]);
        }
        printf("查询完毕\n");
        return OK;
    }
    

    程序运行结果为:

    初始化后: list.Length = 0  
    添加数据后: list.Length = 9  
    取的值为第3个数据为: 3 
    删除第5个数据,length: 8 
    数据:2数据:3数据:4数据:6数据:7数据:8数据:9数据:9查询完毕
    Program ended with exit code: 0
    

    感谢CC老师
    参考文档:http://c.biancheng.net

    相关文章

      网友评论

          本文标题:线性表-顺序表

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