• 顺序结构的动态分配和静态分配


    使用的是:dev;

    书本是:严蔚敏的数据结构;

    王道考研中的顺序表的静态分配

    #include <stdio.h>
    #define MaxSize 10 //最大长度 
    
    //初始定义值 
    #define OK 1  
    #define ERROR 0
    #define OVERFLOW -2
    typedef int Status;
    
    //静态存储 
    typedef struct{
    	int data[MaxSize];//数组的静态存储 
    	int length;//当前长度 
    }SqList;//顺序表的类型定义 
    //初始化
    void InitList(SqList &L){
    	L.length=0;
    } 
    //违规打印 
    int main(){
    	SqList L;//声明
    	InitList(L);//初始化顺序表
    	for(int i=0;i<MaxSize;i++){
    		printf("data[%d]=%d
    ",i,L.data[i]);
    	} 
    }
    

      王道考研的顺序表的动态分配

    #include <stdio.h>
    #include <stdlib.h>//malloc函数的头文件 
    //#define MaxSize 10 //最大长度 
    #define InitSize 10
    //初始定义值 
    #define OK 1  
    #define ERROR 0
    #define OVERFLOW -2
    typedef int Status;
    
    //动态分配 
    typedef struct{
    	int *data;//动态分配的指针 
    	int MaxSize;//最大容量 
    	int length;// 当前长度 
    }SeqList;//顺序表的类型定义 
    
    //初始化
    void InitList(SeqList &L){
    	//用malloc函数申请一片连续的存储空间
    	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((L.MaxSize+len)*sizeof(int));
    	for(int i=0;i<L.length;i++){
    		L.data[i]=p[i]; //将数据复制到新区域 
    	}
    	L.MaxSize=L.MaxSize+len;//最大长度增加len
    	free(p);//释放原来的内存空间 
    }
     
    //违规打印 
    int main(){
    	SeqList L;//声明
    	InitList(L);//初始化顺序表
    	//插入数据
    	IncreaseSize(L,5); 
    }
    

      数据结构书上实现

    #include <stdio.h>
    #include <cstdlib>//为了exit 
    #define MAXSIZE 100 //最大长度 
    
    //初始定义值 
    #define OK 1  
    #define ERROR 0
    #define OVERFLOW -2
    typedef int Status;
    typedef int ElemType;
    
    //静态存储 
    typedef struct{
    	ElemType *elem;//数组的静态存储 
    	int length;//当前长度 
    }SqList;//顺序表的类型定义 
    //初始化
    Status InitList(SqList &L){
    	L.elem=new ElemType[MAXSIZE];//为顺序表分配一个MAXSIZE的数组空间
    	if(!L.elem)
    		exit(OVERFLOW);
    	L.length=0;
    	return OK;
    } 
    //违规打印 
    int main(){
    	SqList L;//声明
    	InitList(L);//初始化顺序表
    	for(int i=0;i<MAXSIZE;i++){
    		printf("data[%d]=%d
    ",i,L.elem[i]);
    	} 
    }
    

      

  • 相关阅读:
    vue:路由实现原理
    webpack自定义loader和自定义插件
    JS常见的算法
    浅析DES、AES、RSA、MD5加密算法及其应用场景
    关于JSON.parse(JSON.stringify(obj))实现深拷贝应该注意的坑
    Canvas和SVG区别
    解决 webpack 打包文件体积过大
    箭头函数与普通函数的区别
    2.Linux基础命令
    1.Ubuntu系统与vmware虚拟机的安装与使用
  • 原文地址:https://www.cnblogs.com/chenliugou/p/14166168.html
Copyright © 2020-2023  润新知