结构:
private static class Node {
int item;
Node next;
Node(int item, Node next) {
this.item = item;
this.next = next;
}
}
创建:
private Node first;//头结点,不存数据
private Node last;//指向链表的最后一个节点
private int size;
public MylinkedList() {
size = 0;
first = new Node(0, null);
last = null;
}
添加:
public void add(int item) {
Node node=new Node(item,null);
if(size==0){
first.next=node;
last=node;
size++;
}
else{
last.next=node;
last=node;
size++;}
}
public void addhead(int item) {
Node node=new Node(item,null);
if(size==0){
first.next=node;
last=node;
size++;
}
else{
node.next=first.next;
first.next=node;
size++;}
}
public void add(int index, int item) {
checkPosIndex(index);
Node node=new Node(item,null);
int i=0;
Node pointer=first;
if(size==0){
first.next=node;
last=node;
size++;
}else{
while(i
删除:
尤其注意头指针和尾指针和size的变化;其次是注意下标和指针对应起来;
因为睡眠不足而晕乎乎的我写了一堆乱七八糟的东西,给我自己看笑了。
public int remove(int index) {
checkPosIndex(index);
int i=-1;
int m=99999;
Node hhh=first;
while(i
查询:
public int get(int index) {
checkPosIndex(index);
int i=-1;
Node node=first;
while(i
防止溢出:
private void checkPosIndex(int index) {
if (index < 0 || index > size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
}
奇码共赏时刻:



