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;
    }
    
    //虽然实现了动态分配,但需要将原数据复制到新区域,时间开销较大
  • 相关阅读:
    6_java_maven
    线性代数 linear algebra
    hadoop_wordcount_1027
    hadoop_worddistinct_1030
    hadoop_wordcount_1023
    搭建伪分布式_笔记
    linux-sunrpc
    linux-volatile
    linux---asmlinkage
    dqs_linux-1
  • 原文地址:https://www.cnblogs.com/swefii/p/13113677.html
Copyright © 2011-2022 走看看