一、常见数据结构Java实现
1、链表
(1)leetcode提供结构
public class ListNode{
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
(2)Java提供封装
直接调用:LinkedList<T>
2、栈
(1)Java提供封装
直接调用:Stack<T>
常用方法:push(item)、pop()、peek()、empty()
(2)Java实现栈
自己编写的使用数组实现的栈,具体方法有push()、pop()、peek()、empty()、size()
public class MyStack {
//默认容量是10个
private static final int capacity = 10;
//扩容因子,默认是扩充之前的两倍
private static final int factor = 2;
//集合元素的个数
private int mSize = 0;
//核心数组
private int[] mArray = new int[capacity];
//push()
public int push(int element){
if(mSize >= mArray.length){
//如果数据满了那么需要进行扩容
int[] newArray = new int[mArray.length*factor];
System.arraycopy(mArray,0,newArray,0,mArray.length);
mArray = newArray;
}
mArray[mSize++] = element;
return element;
}
//pop()
public int pop(){
if(mSize>0){
int result = mArray[mSize-1];
mArray[mSize - 1] = 0;
mSize--;
return result;
} else {
throw new EmptyStackException();
}
}
//peek()
public int peek(){
if(mSize>0){
return mArray[mSize - 1];
} else {
throw new EmptyStackException();
}
}
//empty()
public boolean empty(){
return mSize == 0;
}
//size()
public int size(){
return mSize;
}
}
3、队列
(1)Java提供封装
直接调用:Queue<T>
常用方法:add(item)、remove()、element()、isEmpty()
(2)Java实现队列
自己编写使用数组实现队列,具体方法:add(item)、remove()、element()、isEmpty()
public class MyQueue {
//默认初始容量为10个
private final static int capacity = 10;
//默认扩容因子为2倍
private final static int factor = 2;
//队列元素的个数
private int mSize = 0;
//核心数组
private int[] mArray = new int