怎样为动态数组插入或删除元素?
比如
- Delphi(Pascal) code
var P:TBoundArray; i:integer;setlength(P,10);for i:=1 to 10 do P[i]:=i; //把P弄成1,2,……,10
现在我要把P弄成 1,2,……,5,7,……,10 而且P的元素数变成9;
再把P弄成 1,2,……,5,6,7,……,10
分别怎么做呀?
我不想用链表呀,吐血级的东东!
[解决办法]
链表也是用动态数组实现的,原理是一样的。
[解决办法]
数组是连续存放的,好像没什么特别好的办法,一般只能用循环一个一个的移动,如果比较有规律,或许可以用内存的复制来偷个懒,
[解决办法]
数组就别偷懒了
[解决办法]
你设置的是10 那么是从数组下标是从0开始的
- Delphi(Pascal) code
//数据 初始化for i:=0 to 8 dobegin if i<5 then p[i]:=i+1; if i>=5 then p[i]:=i+2;end;//增添procedureprocedure addNumber;var i:Integer;begin for i:=9 to 0 do if i>=5 then p[i]=p[i-1]; p5]:=6;end;
[解决办法]
用LIST就可以,如果硬是要用数组, 里边用个MOVE
其实LIST也是数组加的MOVE操作
[解决办法]
只能移动后处理
[解决办法]
动态数组是线性队列,因此删除中间一个元素时只能先将改元素之后的所有元素前移一位,再用SetLength相修改动态数组大小。
同理插入一个元素时,必须先用SetLength相修改动态数组大小,然后将要插入位置及其之后的所有元素后移一位,再将要插入的元素赋值到相应位置。
如果要进行大量的删除、插入修改,则应该使用链表,因为链表在删除、插入修改时只涉及该位置前后链接指针内容修改及要删除、插入元素的内存分配,工作量要小多了。
[解决办法]
List加入的是对象的指针
整形变量也是个对象~