目录
1.结构体设置
typedef struct Seq
{
int *data;
int length;
int size;
}seq;
2. 顺序表初始化
// 顺序表初始化
seq *seq_init(void)
{
seq *p=(seq *)malloc(sizeof(seq));
p->data=(int *)malloc(sizeof(int)*5);
p->length=0;
p->size=5;
return p;
}
3.插入一个数据到顺序表指定的位置
// 插入一个数据到顺序表指定的位置
void seq_insert(seq *p,int elem,int add) // 1 2 3 4 length=4 elem=10 add=2
{
if(add<1 || add>p->length+1)
{
return;
}
if(p->length==p->size)
{
p->data=(int *)realloc(p->data,sizeof(int)*(p->size+1));
p->size++;
}
int i;
for(i=p->length;i>=add;i--)
{
p->data[i]=p->data[i-1];
}
p->data[add-1]=elem;
p->length++;
}
4.遍历函数
// 遍历函数
void display(seq *p)
{
int i;
for(i=0;i<p->length;i++)
{
printf("%d >> ",p->data[i]);
}
printf("\n");
}
5.删除某个位置的数据
//删除某个位置的数据
int seq_del(seq *p,int add) // 1 2 3 4 add=2
{
if(add<1 || add>p->length)
{
return -1;
}
int i;
for(i=add;i<p->length;i++)
{
p->data[i-1]=p->data[i];
}
p->length--;
return 0;
}
6.查询某个数据的位置
// 查询某个数据的位置
int seq_search(seq *p,int elem)
{
int i;
for(i=0;i<p->length;i++)
{
if(p->data[i]==elem)
{
return i+1;
}
}
return -1;
}
7.修改某个数据为新的数据
// 修改某个数据为新的数据
void seq_change(seq *p,int elem,int newelem)
{
int add=seq_search(p,elem);
p->data[add-1]=newelem;
}
8.插入某个数据到顺序表,保持顺序表递增有序
// 插入某个数据到顺序表,保持顺序表递增有序
void seq_test_insert(seq *p,int elem) //2 4 6 8 elem=5
{
int i;
for(i=0;i<p->length;i++)
{
if(elem<p->data[i])
{
break;
}
}
seq_insert(p,elem,i+1);
}
9.删除某个数据,保持顺序表递增有序
// 删除某个数据,保持顺序表递增有序
void seq_test_del(seq *p,int elem) //2 4 5 8 6
{
int i;
for(i=0;i<p->length;i++)
{
if(elem==p->data[i])
{
break;
}
}
seq_del(p,i+1);
}