顺序表的插入与删除

本文介绍了顺序表的插入和删除操作的基本思想,并提供了C语言实现示例。顺序表插入时,首先判断空间和插入位置是否合适,然后移动元素插入新值;删除时,检查位置正确性,移动元素并更新表长。示例中展示了如何在数组中进行这些操作,并给出了错误处理情况。
摘要由CSDN通过智能技术生成
  顺序表插入基本思想 : 

①判断空间是否足够 

②判断插入位置是否合理

③从最后一个元素开始依次往后移动每个数据元素,挪出空间

④插入新元素

⑤表长因为增加了一个新元素而加一

例题:

 【问题描述】给出一个无序数组,长度为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")  ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值