自定义一个动态数组(数组,链表两种方法实现)

数组实现:

import java.util.Arrays;

class MyArray<E>{
	private E[] elementData;
	private int size;
	private final static int DEFAULT_CAPACITY = 10;
	public MyArray(){
		//elementData = (E[]) new Object[DEFAULT_CAPACITY];
		this(DEFAULT_CAPACITY);
	}
	public MyArray(int initCap){
		elementData = (E[])new Object[initCap];
	}

	public add(E e){
		if(size == elementData.length){
			int oldCap = elementData.length;
			int newCap = oldCap + ((oldCap > 64)?oldCap:oldCap>>1);
			if(newCap > Integer.MAX_VALUE){
				thorw new IndexOutOfBoundsException("数组元素过多");
			}
			elementData = Arrays.copyOf(elementData,newCap);
		}
		elementData[size++] = e;
	}
}

链表实现:

public class MyArrayBasedOnLinkedList<E> {
	private class Node{
		E e;
		Node next;
		Node prev;
	}
	Node(E data,Node next,Node prev){
		this.data = data;
		this.head = head;
		this.tail = tail;
	}
	private int size;
	private Node head;
	private Node tail;
	
	//尾插
	public void add(E data){
		Node node = new Node(data,null,tail);
			//判断链表是否为空
			if(tail == null){
				head = tail = node;
			}
			//将当前节点指向上一个节点
			//node.prev = tail;
			//将当前链表的尾指针指向新节点
	        tail.next = node;
	        //再将新的节点设置为新的尾节点
	        tail = node;
	        size++;
   	}				
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我顶得了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值