int [] num = new int[5]{1,3,5,7,9};
上面是一个数组,这时我要向数组里面的第三个位置插入元素2,现在的办法是,把第三个位置到最后一个位置的元素都向后移动,以便空出第三个位置,然后插入元素2,因为移动要从最后一个位置开始,依次向后挪动,即 int【5】=int【4】。,这时便会编译报错,索引超出范围,请问该如何解决这个问题呢?
还有 这个数组换成是arraylist也是一样的,因为最后一个元素的值要赋给后面的一个,但是后面的一个是不存在的,这就产生一个矛盾了,但是不这样又怎么能实现数组元素的向后移动呢?
上面是一个数组,这时我要向数组里面的第三个位置插入元素2,现在的办法是,把第三个位置到最后一个位置的元素都向后移动,以便空出第三个位置,然后插入元素2,因为移动要从最后一个位置开始,依次向后挪动,即 int【5】=int【4】。,这时便会编译报错,索引超出范围,请问该如何解决这个问题呢?
还有 这个数组换成是arraylist也是一样的,因为最后一个元素的值要赋给后面的一个,但是后面的一个是不存在的,这就产生一个矛盾了,但是不这样又怎么能实现数组元素的向后移动呢?
public partial class Form1 : Form
{ //声明ArrayList arr
private System.Collections.ArrayList arr = new ArrayList();
public Form1()
{
InitializeComponent(); //窗体初始化时,初始化 arr,赋值为1,2,3,4,5,
for (int i = 0; i <= 4; i++)
{
arr.Add(i);
}
}
//显示ArrayList中的所有元素
private void button2_Click(object sender, EventArgs e)
{ string temp = "";
for (int i = 0; i <= arr.Count - 1; i++)
{
temp = temp + Convert.ToString(arr[i]) + ",";
} label1.Text = temp;
}
//插入元素。ArrayList.Insert(Index,Value).在第三个位置,插入10
private void button1_Click(object sender, EventArgs e)
{
arr.Insert(2, 10);
}
public partial class Form1 : Form
{ //声明ArrayList arr
private System.Collections.ArrayList arr = new ArrayList();
public Form1()
{
InitializeComponent(); //窗体初始化时,初始化 arr,赋值为1,2,3,4,5,
for (int i = 0; i <= 4; i++)
{
arr.Add(i);
}
}
//显示ArrayList中的所有元素
private void button2_Click(object sender, EventArgs e)
{ string temp = "";
for (int i = 0; i <= arr.Count - 1; i++)
{
temp = temp + Convert.ToString(arr[i]) + ",";
} label1.Text = temp;
}
//插入元素。ArrayList.Insert(Index,Value).在第三个位置,插入10
private void button1_Click(object sender, EventArgs e)
{
arr.Insert(2, 10);
}
各位帮我看一下下面的insert方法的问题,data[j+1] = data[j];这行代码总是会报索引出错,因为data[j+1]这个位置是不存在的。
再次万分感谢!using System;
/// <summary>
/// 定义顺序线性表类实现相关的功能
/// </summary>
class SequenceList
{
int maxsize; //线性表的容量
object[] data; //用于存储顺序表的元素
int last; //指示线性表中的最后一个元素
//索引器,用于读取或设置线性表的值
public object this[int index]
{
get
{
return data[index];
}
set
{
data[index]=value;
}
}
//用于获取最后位置的属性
public int Last
{
get
{
return last;
}
}
//用于获取线性表容量的属性
public int Maxsize
{
get
{
return this.maxsize;
}
set
{
this.maxsize = value;
}
}
//构造方法,初始化线性表
public SequenceList(int size)
{
this.maxsize = size;
data = new object[size];
last = data.length -1;
}
//求线性表长度
public int GetLength()
{
return last+1;
}
//清空线性表
public void Clear()
{
last = -1;
}
//判断线性表是否满了
public bool IsFull()
{
if(last == maxsize - 1 )
return true;
else
return false;
}
//判断线性表是否为空
public bool IsEmpty()
{
if(last == -1)
return true;
else
return false;
}
//向线性表末尾追加元素
public void Append(object e)
{
if(IsFull())
{
Console.WriteLine("线性表已满!");
return;
}
data[++last] = e;
}
//在顺序表第i个位置插入元素
public void Insert(object e,int i)
{
if(IsFull())
{
Console.WriteLine("线性表已满,无法插入!");
return;
}
if(i<1||i>last+2)
{
Console.WriteLine("插入位置错误!");
return;
}
if(i == last + 2)
{
data[last+1] = e;
}
else
{
for(int j = last;j>=i-1;j--)
{
data[j+1] = data[j];
}
data[i - 1] = e;
}
++last;
}
}
class Test
{
static void Main()
{
SequenceList list = new SequenceList(5);
for(int i=1;i<=5;i++)
{
data[i]=i;
}
list.Insert(5,2);
}
}