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;
    }
    
    //虽然实现了动态分配,但需要将原数据复制到新区域,时间开销较大
  • 相关阅读:
    linux API 获得文件属性
    Linux 服务端设计
    Linux C++ 使用LuaBind嵌入lua脚本
    Linux 编译安装Boost (转)
    Navicat for My SQL 查看中文乱码问题
    fastbuild联编ue4 shader的使用
    fastbuild进行ue4 shader连编
    maya 插件学习之pythonCharm和Qt环境搭建
    ue4 头发渲染
    ue4 新渲染管线整理
  • 原文地址:https://www.cnblogs.com/swefii/p/13113677.html
Copyright © 2011-2022 走看看