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