#include <stdio.h>
#include <cstdlib>
//顺序表 动态分配
//typedef相当于起外号,define相当于是替换
typedef int ELemType;
typedef struct {
//动态分配
ELemType *e;
int length;
}SqList_D;
void Init_SqList(SqList_D &s,int length)
{
s.length=length;
s.e=(ELemType*)malloc(sizeof(ELemType)*s.length);
}
void Create_SqList(SqList_D &s)
{
for (int i = 0; i < s.length; ++i) {
s.e[i]=(ELemType)random()%20;//0-19
}
}
//给序号找值 不是下标
ELemType get_ele(SqList_D s,int pos){
//判断index合法
int index=pos-1;
if(pos<1||pos>s.length) return 0;
return s.e[index];//连续空间随即存取
}
//给值找序号
int get_index(SqList_D s,ELemType e){
for (int i = 0; i < s.length; ++i) {
if (s.e[i]==e)
{
return i+1;
}
}
return 0;
}
void insert_e(SqList_D &s,ELemType key,int pos)
{
ELemType *p=s.e;
Init_SqList(s,++s.length);
for (int i = 0,j=0; i <s.length ; ++i) {
if(i==pos-1)
{
s.e[i]=key;
} else{
s.e[i]=p[j++];
}
}
free(p);
}
void desert_e(SqList_D &s,ELemType key)
{
int index= get_index(s,key);
if(index)
{
for (int i = index,j=index+1; i <s.length ; ++i) {
s.e[i]=s.e[j++];
}
}
//释放多余空间
free(&s.e[s.length]);
s.length--;
}
void Print(SqList_D s)
{
for (int i = 0; i <s.length ; ++i) {
printf("%d ",s.e[i]);
}
printf("\n");
}