练习6—数据插入

简介: 练习6—数据插入

题目

编写程序,有一维数组数据为:23,34,45,60,67,88,96,从键盘上输入一个数据,将数据插入到数组,使得插入后的数组元素依然保持有序并输出到屏幕。

解题步骤

(1)数组建立;

(2)接收用户输入数据;

(3)查找位置;

(4)移动元素;

(5)插入(赋值);

(6)输出结果;

Java

import java.util.Scanner;
public class Demo {
    public static void main(String[] args){
        int[] array=new int []{23,34,45,60,67,88,96,0};//此处的0表示占位(否则创建的数组为[7]
        int i,input,location;
        Scanner user=new Scanner(System.in);
        System.out.println("please enter an integer:");
        input=user.nextInt();
        for(i=0;i<7;i++)   //因为0占位,所以相当于只有7个元素,不能改为8
            if(input<=array[i])
                break;
        location=i;
        for(i=6;i>=location;i--)  //注意i初始值6,最大下标为6(未插入数据前)
            array[i+1]=array[i];  //前方数据后移
        array[location]=input;
        System.out.println("insert "+input+"after the array elements are:");
        for (i = 0; i < 8; i++)
            System.out.format("%d  ", array[i]);
    }
}

说明

Java处最关键的是分清楚插入数据前后,数组元素的下标值以及数组的建立过程。

C语言

#include <stdio.h>
int main()
{
    int array[8] = {23, 34, 45, 60, 67, 88, 96}, i, input, location = 0;
    printf("please enter any integer:");
    scanf("%d", &input);
    for (i = 0; i < 7; i++) //i<现有元素个数,寻找位置
        if (input <= array[i])
            break;
    location = i;                   //标记此处位置,占位
    for (i = 7; i >= location; i--) //顺次后移
        array[i + 1] = array[i];
    array[location] = input;
    printf("Insert %d housing number element:", input);
    for (i = 0; i < 8; i++)
        printf("  %d", array[i]);
    return 0;
}

说明

  1. 难点在于如何找到待插入数据合适位置以及如何移动数组元素位置。这里使用循环求解:for循环实现位置查找功能,判断条件为待插入数据<=数组元素值。若满足条件,则退出循环并保留位置下标给location
  2. 找到位置后需要插入数据,并且不能覆盖掉原数据,这时候需要对原数据整体移动。同样使用for循环实现,i=7就相当于指针指向了数组中最后一个元素,所有在location之后的元素都得为它 “让位”,即后移。最后location位置便是空值,只需对它赋值(用户输入值)便实现数据插入。



相关文章
|
3月前
|
SQL 关系型数据库 MySQL
数据的插入和查询
数据的插入和查询
|
4月前
|
存储
单链表相关操作(插入,删除,查找)
单链表相关操作(插入,删除,查找)
42 4
|
存储 C语言 C++
顺序表的插入、删除和查找(四)
详细介绍了数据结构中的顺序表
247 0
|
算法
一天一个算法——>二叉搜索树的插入、查询、删除
一天一个算法——>二叉搜索树的插入、查询、删除
74 0
|
数据库 数据安全/隐私保护
批量插入【对新数据进行插入操作,已存在的记录进行更新操作】
批量插入【对新数据进行插入操作,已存在的记录进行更新操作】
150 0
批量插入【对新数据进行插入操作,已存在的记录进行更新操作】
链表的插入与删除
链表的插入与删除
71 0
【小白学算法】5.单链表,插入、读取
【小白学算法】5.单链表,插入、读取
【小白学算法】5.单链表,插入、读取
插入新的行
插入新的行
70 0
线性表的插入与删除(标准C)
线性表的插入与删除(标准C)
92 0