顺序表中在第i个数据元素位置上插入一个数据元素(修改)
来源:互联网 发布:天刀本地网络异常 编辑:程序博客网 时间:2024/05/22 06:30
//在顺序表的第i个数据元素位置插入一个数据元素
public void Insert(T item, int i)
{
if (IsFull())
{
Console.WriteLine("List is full");
return;
}
else if(i<1||i>last+2)
{
Console.WriteLine("Position is erro");
return;
}
else if (i == last + 2) //可以看到这里是把i=last+2单独拿出来考虑的
{
data[++last] = item;
}
else
{
for (int j = last; j >= i-1; j--)
{
data[j + 1] = data[j];
}
data[i - 1] = item;
}
last++;
}
其实把i=last+2单独拿出来是没有必要的,可以将上面的代码修改为下面情况.
public void Insert(T item, int i)
{
if (IsFull())
{
Console.WriteLine("List is full");
return;
}
else if(i<1||i>last+2)
{
Console.WriteLine("Position is erro");
return;
}
else
{
for (int j = last + 1; j >i-1; j--)
{
data[j] = data[j-1];
}
data[i-1] = item;
last++;
}
}
在这个函数中对于在最后插入一个元素的情况,即i=last+2时,进入最后的else循环可以得到此时,j=last+1、i-1=last+1所以程序不会进入for循环,直接执行
data[i-1] = item;
last++;
可以得出是在顺序表的末尾直接加入了这个元素
对于在第一个位置加入元素,即i=1时,有for可以看出,顺序表的所有元素都依次从后往前,向后移动了一个位子,即原来下标为last的元素移动到下标为last+1的位置上,依次下去,最后原下标为0的元素移到下标为1的位置上,这是j=0 不大于0(即i-1),推出循环,执行 data[i-1] = item;就可以将元素加到第一个位置上,
对于一般情况和在第一个位置上插入元素是一样的。
- 顺序表中在第i个数据元素位置上插入一个数据元素(修改)
- 单链表--在第i个位置前插入元素e
- 在顺序表中插入一个元素
- 设计一个算法,删除一个顺序表中从第i个元素开始的k个元素。
- 编写算法实现建立一个带头结点的含n个元素的双向循环链表H,并在链表H中的第i个位置插入一个元素e
- 0001顺序表中插入一个元素
- 试设计一个算法,删除一个顺序表从第i个元素开始的k个元素
- 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
- 设顺序表a中的数据元素递增有序,试设计一个算法,将x插入到顺序表的适当位置,以保持该表的有序性。
- 从la中删除字第i个元素起共len个元素后,将他们插入到表lb中第j个元素之前
- 数据结构复习(在新位置上插入元素)
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 在有序的顺序表 L 中保序插入数据元素 x
- 在一个List的指定位置插入一个元素对这个List中的已有的元素顺序的影响
- 在Textarea中插入元素(光标位置)
- 用JavaScirpt在Textarea中插入元素(光标位置)
- Java程序练习-在顺序表中插入元素
- c语言:【顺序表】静态顺序表的在指定位置插入元素,以及查找指定元素
- droplist应用实例
- 、、
- 阿里巴巴为什么收购美国的Auctiva
- 与日本Yabage平台连接
- 一个魔方矩阵的个人算法.
- 顺序表中在第i个数据元素位置上插入一个数据元素(修改)
- QT中的多线程(一)
- 海盗分金问题
- 更小更快更灵活——设计师谈敏捷
- QT中的多线程(二)
- Struts 2和Struts 1的区别
- 产品经理 ≠ 产品设计师
- eclipse/myeclipse代码提示增强型显示
- [Java] 序列化 Images 转换成 AVI/MOV 以及多个AVI的合并