顺序结构的动态分配和静态分配
使用的是: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\n",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\n",i,L.elem[i]); } }