线性表采用顺序存储的动态分配方式实现
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<math.h>
//#include<algorithm>
//#include<stack>
//#include<queue>
//#include<string>
//#include<map>
//using namespace std;
#define InitSize 10
typedef struct
{
int *data;
int length;
int Maxsize;
}SqList;
//int a[10];
//int *a;
//a=(int *)malloc(sizeof(int)*10); a[0],a[1]
void InitList(SqList &L)
{
L.data=(int *)malloc(sizeof(int)*InitSize);
L.length=0;
L.Maxsize=InitSize;
}
void IncreaseSize(SqList &L,int len)
{
int *p=L.data;
L.data=(int *)malloc(sizeof(int)*(L.Maxsize+len));
for(int i=0;i<L.length;i++)
{
L.data[i]=p[i];
}
L.Maxsize=L.Maxsize+len;
}
bool InsertList(SqList &L,int index,int x)
{
if(index<1||index>L.length+1) return false;
if(L.length>=L.Maxsize) return false;
for(int i=L.length-1;i>=index-1;i--)
{
L.data[i+1]=L.data[i];
}
L.data[index-1]=x;
L.length++;
return true;
}
void PrintList(SqList L)
{
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
//int a[10] a[0]
//*a (int *)malloc(sizeof(int)*10) a[0]
int main()
{
SqList L;
InitList(L);
IncreaseSize(L,10);
InsertList(L,1,150);
InsertList(L,2,500);
PrintList(L);
return 0;
}