①判断空间是否足够
②判断插入位置是否合理
③从最后一个元素开始依次往后移动每个数据元素,挪出空间
④插入新元素
⑤表长因为增加了一个新元素而加一
例题:
【问题描述】给出一个无序数组,长度为10,10,12,14,16,18,20,13,200,134,59。给定一个位置position和一个数字value,将value插入到position指定的位置上。输出插入后的数组。
【输入形式】两个数字,一个是插入数字的位置,一个是插入的数字
【输出形式】插入后的数组
【样例输入】1 20
【样例输出】20 10 12 14 16 18 20 13 200 134 59
图解·
C语言代码
#include<stdio.h>
#define SIZE 10
int main()
{
void printArray(int array[],int length); //声明打印数组的函数
int array[SIZE+1]= {10,12,14,16,18,20,13,200,134,59}; //拓展组长度
int position,value;
scanf("%d %d",&position,&value);//输入插入值的位置position 和值 value
//这里填写把value的值插入到pos位置的代码
//从最后一个开始,到position为止,向后移动一格
int j;
for (j=SIZE+1;j>=position;j--)
{
array[j]=array[j-1];
}
array[position-1] =value;
//打印结果
printArray(array,SIZE+1);
return 0;
}
/**打印数组的函数
* @param array 数组
* @param length 数组的长度
*/
void printArray(int array[],int length)
{
int i;
for(i=0;i<length;i++)
printf("%d ",array[i]) ;
printf("\n") ;
}
顺序表删除基本思想
①判断表是否为空
②判断要删除的元素序号是否正确
③从第i+1个元素开始依次往前移动每个数据元素一个位置
④表长因为减少了一个新元素而减一
例题
【问题描述】给定一个数组10,12,14,16,18,20,13,200,134,59,从数组中删除指定位置的元素。如果输入的位置不正确,输出“Position error.”如果被删除的数组为空,输出"Array is empty."
【输入形式】一个整数,代表数字所在的位置
【输出形式】删除后的数组
【样例输入】1
【样例输出】12 14 16 18 20 13 200 134 59
【样例输入】13
【样例输出】Position error.
C语言
#include<stdio.h>
#define SIZE 10
int main()
{
void printArray(int array[],int length); //声明打印数组的函数
int array[SIZE]= {10,12,14,16,18,20,13,200,134,59};
int position;//眼要删除的数字的位置
int flag = 2; //flag状态: 1待删除的表为空,2删除位置不正确,0正确删除
scanf("%d",&position); // 删除值的位置
if(SIZE != 0) //要判断数组长度是不是为空
{
//这里填入删除position位置的数据的代码
if(position>0 && position <= SIZE)//正常的思维只有1是第一个位置,position不取0,数组下标0的位置,是第一个位置
{
int i;
for( i=position-1; i<SIZE; i++)
{
array[i] = array[i+1];//将数组里的元素向前移动
}
flag = 0;
}
}
else
{
flag=1;
}
//这里填入代码,对flag的三种不同状态显示不同的输出
switch (flag)
{
case 0:
printArray(array,SIZE-1);break;
case 2:
printf("Position error.");break;
case 1:
printf("Array is empty.");break;
}
return 0;
}
//打印数组
void printArray(int array[],int length)
{
int i;
for(i=0; i<length; i++)
printf("%d ",array[i]) ;
printf("\n") ;
}