顺序表是计算机内部存储的一张线性表,这里用一组连续的数组向大家介绍详细表。
首先是定义顺序表的长度
#define MaxSize 10
接下来是向顺序表中添加元素:
/*
参数:
sqlist:顺序表的首地址
len: 顺序表的长度
i: 插入元素的位置
num: 插入元素的值
返回值:无
*/
void Input_Elem(int sqlist[],int *len,int i,int num)
{
int t;
if((*len == MaxSize)||( i < 1 )||(i > *len+1))
{
printf("插入元素位置出错!\n");
return ;
}
for(t = *len - 1 ;t > i-1 ; t--)
{
sqlist[t+1] = sqlist[t];
}
sqlist[i-1] = num;
*len = *len +1;
}
那么插入之后应该如何删除顺序表的元素呢?
/*
参数:
sqlist:顺序表的首地址
*len: 顺序表的长度
i: 删除元素的位置
返回值:无
*/
void Del_Elem(int sqlist[],int *len,int i)
{
int j;
if((i<1)||(i>len))
{
printf("删除元素位置出错!\n");
return ;
}
for(j = i;j<*len;j++)
{
sqlist[j-1] = sqlist[j];
}
*len = *len - 1;
}
再加上测试代码
int main()
{
int Sqlist[MaxSize]; / /定义一个静态顺序表
int len = 6; //用于记录顺序表的长度,初始长度为6
int i;
printf("请输入6个数字:");
for(i=0;i<len;i++)
scanf("%d",&Sqlist[i]);
printf("你输入的元素为:");
for(i=0;i<len;i++)
printf("%d ",Sqlist[i]);
printf("\n顺序表中剩余的空间为 %d\n\n",MaxSize - len);
//在表中第3位置插入整数0
Input_Elem(Sqlist,&len,3,0);
printf("插入操作之后的顺序表为:");
for(i=0;i<len;i++)
printf("%d ",Sqlist[i]);
printf("\n顺序表中剩余的空间为 %d\n\n",MaxSize - len);
//*在表中第11位置插入整数0
Input_Elem(Sqlist,&len,11,0);
printf("插入操作之后的顺序表为:");
for(i=0;i<len;i++)
printf("%d ",Sqlist[i]);
printf("\n顺序表中剩余的空间为 %d\n\n",MaxSize - len);
//删除顺序表中的第6个元素
Del_Elem(Sqlist,&len,6);
printf("删除操作之后的顺序表为:");
for(i=0;i<len;i++)
printf("%d ",Sqlist[i]);
printf("\nThe spare length is %d\n",MaxSize - len);
return 0;
}