zoukankan      html  css  js  c++  java
  • 顺序结构的动态分配和静态分配

    使用的是: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]);
    	} 
    }
    

      

  • 相关阅读:
    P1983 车站分级
    P1807 最长路
    P1347 排序
    P1073 最优贸易 (tarjan缩点+dp)
    最小费用最大流解决KM匹配问题
    CF191C Fools and Roads
    case when
    防呆机制
    DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。
    存储过程带参数和sqlcommand
  • 原文地址:https://www.cnblogs.com/chenliugou/p/14166168.html
Copyright © 2011-2022 走看看