zoukankan      html  css  js  c++  java
  • DS-1-顺序表的静态分配与动态分配的实现

    所谓顺序表即以顺序存储的方式实现线性表

    以下为静态分配实现

    #include <stdio.h>
    #define MaxSize 10    //最大长度
    typedef struct{
        int data[MaxSize];
        int length;        //当前长度
    }SqList;            //顺序表静态定义
    
    void InitList(SqList &L){
        for(int i = 0; i < MaxSize; i++)    //设置默认值可省略
            L.data[i] = 0;
        L.length = 0;        //length默认值不可省略
    }
    
    int main(){
        SqList L;
        InitList(L);
    
        return 0;
    }

    以下为动态分配实现

    #include <stdlib.h>
    
    #define InitSize 10        //默认最大长度
    typedef struct{
        int *data;
        int MaxSize;    //最大容量
        int length;        //当前长度
    }SeqList;
    
    void InitList(SeqList &L){
        L.data = (int *)malloc(InitSize*sizeof(int));
        L.length = 0;
        L.MaxSize = InitSize;
    }
    
    //增加动态数组的长度
    void IncreaseSize(SeqList &L, int len){
        int *p = L.data;
        L.data = (int *)malloc(sizeof(int)*(L.MaxSize + len));
        for(int i = 0; i < L.length; i++){
            L.data[i] = p[i];        //将数据复制到新区域
        }
        L.MaxSize = L.MaxSize + len;
        free(p);    //释放原有空间
    }
    
    int mian(){
        SeqList L;
        InitList(L);
        IncreaseSize(L,5);
    
        return 0;
    }
    
    //虽然实现了动态分配,但需要将原数据复制到新区域,时间开销较大
  • 相关阅读:
    xlrd doc
    安装Python package
    Python处理Excel(转载)
    OPENSSL简介
    sublime text2教程
    使用SQL 从表中取记录
    SQL基础
    shell脚本之grep的使用方法
    (转载)(收藏)OceanBase深度解析
    (转载)线程池的使用
  • 原文地址:https://www.cnblogs.com/swefii/p/13113677.html
Copyright © 2011-2022 走看看