和上一篇文章不同,此文章使用动态内存分配,使得线性表的表长可以扩展,使用更加灵活。
#include<iostream>
using namespace std;
#define InitSize 10
typedef struct {
int *data;
int MaxSize;
int length;
}SqList;
void ListStatus(const SqList& L)
{
cout << endl;
cout << "表长为" << L.length << endl;
cout << "表元素为";
for (int i = 0; i < L.length; i++)
cout << L.data[i] << " ";
cout << endl;
cout << "剩余可用空间为" << L.MaxSize - L.length << endl;
}
int InitList(SqList &L)
{
L.data = new int(InitSize);
L.length = 0;
L.MaxSize = InitSize;
ListStatus(L);
return 0;
}
int IncreaseList(SqList& L, int len)
{
int* p = L.data;
L.MaxSize += len;
L.data = new int(L.MaxSize);
for (int i = 0; i < L.length; i++)
L.data[i] = p[i