静态顺序表和动态顺序表区别和优缺点比较

静态顺序表

 typedef int DataType;

 #define MAX_SIZE (100)

 typedef struct SeqList {
     DataType array[MAX_SIZE];
     int size;    // 当前可用下标
 } SeqList;

动态顺序表

 typedef int DataType;
 
 typedef struct SeqListD {
     DataType * array;
     int capacity;    // 当前容量 等于 静态顺序表 MAX_SIZE
     int size;        // 同静态顺序表
 } SeqListD;

区别

  • 静态顺序表和动态顺序表唯一一点不同的是,静态顺序表再创建顺序表的时候容量已经确定为MAX_SIZE,不可以更改,而动态顺序表的容量是由malloc函数动态开辟,当容量不够用时可以增加容量capacity
  • 扩容方法:动态开辟一块新的空间(一般为原空间的两倍),将原空间的数据拷贝到新的空间,然后让array指针指向新的空间并且释放旧空间

优缺点比较

  • 静态顺序表创建空间时为静态开辟,不用malloc函数,代码相对简单(一点点),不存在内存泄露问题
  • 动态顺序表,动态开辟空间,使用相对灵活,相比于静态开辟空间也可以少空间浪费

猜你喜欢

转载自blog.csdn.net/qq_40860852/article/details/89338267