向数组中插入数(顺序表)

有一个数组init_list[],数组的为长度n,此时需要向数组中的第i个位置(不是索引为i,而是i-1)插入一个数x。

代码如下:

#include<iostream>
using namespace std;
#define MAXSIZE 100
int init_list[MAXSIZE];
int insert_list(int list[],int *p,int i,int x){
	//之所以用*p是因为:当插入成功的时候,数组的长度要加1
	//如果不用指针的话,便不能改变主函数中n的值
	if(i<0||i>*p){
		cout<<"i输入不合法"<<endl;
	} else  if(*p>=MAXSIZE){
		cout<<"超出数组长度MAXSIZE"<<endl;;
	} else {
		for(int j=*p;j>i;j--){
			//从最后到第i个数组中的数,依次向后移动一个位置,空出第i个位置来存放x
			list[j]=list[j-1];
		}
		list[i]=x;
		(*p)++;//此步容易忘记,若不增加1,则元数组的长度并未改变,就会丢失数组中最后一个数
		cout<<"插入成功"<<endl;
		return 0;
	}
}
int main(){
	int n,x;
	cout<<"请输入数组长度"<<endl;
	cin>>n;
	cout<<endl;
	cout<<"请输入数组元素"<<endl;
	for(int i=0; i<n; i++){
		cin>>init_list[i];
	}
	cout<<endl;
	cout<<"请输入需要插入的位置"<<endl;
	int i;
	cin>>i;
	cout<<"请输入数值"<<endl;
	cin>>x;
	insert_list(init_list,&n,i,x);
	for(int i=0;i<n;i++){
		cout<<init_list[i]<<" ";
	}
}
时间: 2025-01-16 07:55:01

向数组中插入数(顺序表)的相关文章

设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。

转自: https://blog.csdn.net/cckevincyh/article/details/45605261 设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性 先建立一个待插入的结点,然后依次与与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点. 算法如下: #include<stdio.h> #include<stdlib.h> #define MAXSIZE 20 #define OK 1 #def

1146: 零起点学算法53——数组中插入一个数

1146: 零起点学算法53--数组中插入一个数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 1749  Accepted: 613[Submit][Status][Web Board] Description 给定有序数组(从小到大),再给你一个数,要求插入该数到数组中并保持顺序 Input 多组测试,每组第一行输入一个整数n,然后是n个有序的整数 第二行输入1个整数m和1个整数K Outpu

数组依然有序,求看下程序问题在哪儿?在有序数组中插入一个数

有若干整数按从小到大顺序放在数组中,用户输入一个数插入到此数组中,数组中的数依然按从小到大排列.求大佬看一下这个程序哪里有问题?#include<stdio.h>#include<stdlib.h>void inserer(int *s,int x,int *n){    int i,j=0;    while(j<*n && s[j]<x) j++;    for(i=(*n)-1;i>=j;i--) s[i+1]=s[i];    s[i]=x

1144: 零起点学算法51——数组中删数

1144: 零起点学算法51--数组中删数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 3304  Accepted: 933[Submit][Status][Web Board] Description 在给定的数组中删除一个数 Input 多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m Output 删除在第一行的n个整数中第一次出现数字m并删除,然后按

1145: 零起点学算法52——数组中删数II (有问题!)

1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 2935  Accepted: 793[Submit][Status][Web Board] Description 在给定的数组中删除数 Input 多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m Output 删除在第一行的n个整数中的数字m(多个的话都要删除),

向数组中插入元素

import java.util.Arrays;import java.util.Scanner; public class Demo03 { public static void main(String[] args) {  //想数组中插入元素  //声明一个旧数组  int[] nums=new int[5];  Scanner input=new Scanner(System.in);  //从控制台输入5个数  System.out.println("输入5个数:");  f

24、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

在一组降序排列的数组中插入一个数据,插入后,数组中数据依然按降序排列

分析: 1.数组固定,是一个倒序的数组 2.插入一个数据,这个数据插在哪呢,要比较,与数组中所有的元素比较,这里需要一个循环,因为是降序的数组,所以当第一次遇到比自己小的,那么这个位置就是要插入的位置 3.因为上一步被占了位置,那么从这个插入的数据开始,后面的原本的数据都得向右移一位 /** * */ package com.cn.u4; import java.util.Scanner; /** * @author Administrator *向有序数组中插入学员成绩 * 在一组降序排列的数

调整数组中数字的顺序,使得所有奇数位于数组的前半部分

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.要求时间复杂度为O(n),不要求保留数组元素的相对位置. 解析:可以维护两个指针:第一个指针初始化为数组的第一个数字,它只向后移动:第二个指针初始化为数组的最后一个数字,它只向前移动.在两个指针相遇之前,第一个指针总是位于第二个指针的前面.如果第一个指针指向的数字是偶数而第二个指针指向的数字是奇数,就交换这两个数字. 方法一: void patition(ref int[] arr, int n)