可以把某个整数插入到整型数组的特定位置,数组中原有元素向后移动
删除方法:能够从整形数组中特定位置删除掉一个元素,数组中原有元素向前移动
程序代码:
InsertDelete.java:
package p1
import com.kettas.common.*
import java.util.*
public class InsertDelete
{
static int[] a={4,2,7,3,5}//初始数组
static int sum=5//数组的有效位数
public static void main(String[] args)
{
System.out.println("初始数组为:")
output()
while(true)
{
System.out.println(" *** 作:1:插入;2:删除;3:退出")
int option=SystemIn.readInt()
if(option==1)
{
System.out.println("请输入插入的位置:")
int pos=SystemIn.readInt()
System.out.println("请输入要插入的数:")
int num=SystemIn.readInt()
add(pos,num)
System.out.println("插入后的数组为:")
output()
}
else if(option==2)
{
System.out.println("请输入要删除的数的位置:")
int pos1=SystemIn.readInt()
move(pos1)
System.out.println("删除后的数组为:")
output()
}
else
break
}
}
static void add(int pos,int num)
{ //将num插入到数组的第pos下标中,其他元素向后移动
if(sum == a.length)
{ // 扩充数组空间
a=Arrays.copyOf(a,a.length*2)
}
for(int i=sumi>posi--)
{
a[i]=a[i-1]
}
a[pos]=num
sum++ //有效位数加1
}
static void move(int pos)
{ //删除数组中下标为pos的元素
sum-- //有效位数减1
for(int i=posi<sumi++)
{
a[i]=a[i+1]
}
}
static void output()
{ // 遍历输出数组中的元素
for(int i=0i<sumi++)
{
System.out.print(a[i]+" ")
}
System.out.println()
}
}
测试结果:
给你个栈的例子 后进先出队列稍微改一下就行 先进先出
class MyStack {
private int[] data
private int top//栈顶指针
public MyStack(){
this(10)
}
public MyStack(int size){
this.data=new int[size]
this.top=0
}
//入栈
public boolean push(int element){
if(top<this.data.length){
this.data[top++]=element
return true
}
return false
}
//出栈
public int pop(){
if(top>0){
return data[--top]
}
return -1
}
1 在一定程度上是没问题的2 Java中的Queue是一个接口,具体的实现类有很多,比如LinkedList、ArrayDeque等。
这些实现类在向队列中添加元素时,都有相应的容量限制,当达到容量上限时就会抛出异常。
但如果频繁添加数据,可能会导致队列的长度变得很长,从而占用大量的内存空间。
3 如果需要频繁添加数据,可以考虑使用具有自动扩容功能的队列,比如PriorityQueue或ConcurrentLinkedQueue。
这些队列在添加数据时,会自动扩容以容纳更多的元素,从而避免了容量限制的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)