数组和链表实现队列的比较

本文探讨了使用数组和链表两种数据结构实现队列时的增删改查操作。在数组实现中,增加操作需要扩展数组,删除操作涉及遍历和创建新数组,修改操作直接进行。链表实现中,节点类包含数据和指针,增删改查操作更加灵活。通过百万次操作的性能测试,链表实现队列的时间消耗显著低于数组,证明了链表在处理大数据量时的优势。
摘要由CSDN通过智能技术生成
  • 首先对于数组、链表基本都有的基本操作就是增删改查,采用数组和链表两种方式实现增删改查操作
  • 第一种方式是数组实现队列
    首先定义一个接口是增删改查
//定义的接口 其中E为泛型,用来定义具体操作的是什么类型 可以是一个类也可以是基本数据类型(用包装类实现)
public interface Iarray<E> {
   
	//增加
	void add(E e);
	//删除
	void delete(E e);
	//修改
	void check(E e,E ee);
	//遍历
	void arraylist();
	//长度
	int size();
	

}

  • 具体代码块增加操作,思路是因为数组在底层存单元的存储是连续的,因此对于数组的增加操作是首先要new一个比原来数组长度长度增大1的内存然后将要增加的数据存进去
public void add(E e) {
   
		// TODO Auto-generated method stub
		//定义了一个比原来数组长度大1的数组
		obb = new Object[ob.length+1];
		//将原来数组的全部元素都存入新建的数组里面去
		for(int i = 0;i<ob.length;i++) {
   
			obb[i] = ob[i];
					//System.out.println(obb[i]);
		}
		//新建数组的最后一个内存单元用来存放新增加的数据
			obb[obb.length-1] = e;
			ob = obb;				
	}
  • 删除操作,思路是根据要删除的数据值来进行操作,首先遍历数组找到和要删除数值相同的数值然后将其值改为数组类型的默认值,后面新建一个数组长度为原数组长度减去相同数值的个数,最后再将原来在、数组里面的非null值拷贝到新建的数组里面去
public void delete(E e) {
   
		//用来遍历新建数组
		int x = 0;
		// TODO Auto-generated method stub
		//遍历原来数组里面和要删除数据值相同的数据 将其值变为数组默认的值null
		for(int i = 0;i<ob.length;i++) {
   
			if(ob[i] == e) {
   
				ob[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值