简单版本建立List:v1
- 简单的List功能实现,v1
public class SLList_1{
public static class IntNode{
public int item;
public IntNode next;
public IntNode(int i, IntNode n){
item = i;
next = n;
}
}
public IntNode first;
public int size;
public SLList_1(){
first = null;
size = 0;
}
public SLList_1(int x){
first = new IntNode(x, null);
size = 1;
}
public void addFirst(int x){
first = new IntNode(x, first);
size += 1;
}
public void addLast(int x){
size += 1;
if(first == null){
first = new IntNode(x, null);
}
IntNode p = first;
if (p.next != null){
p = p.next;
}
p.next = new IntNode(x, null);
}
public int getSize(){
return size;
}
public static void main(String[] args) {
SLList_1 L = new SLList_1(5);
L.addFirst(10);
L.addLast(1);
System.out.println(L.getSize());
}
}
Q&A:
- 在addLast方法中:
为什么此处要用一个哨兵p?
--如果直接利用first = first.next,那么first前面的数都会丢失。
为什么哨兵p=p.next不会使得first改变?
--哨兵p和first共享一个地址。地址开头就在那,p沿着地址跳动,但first指向的仍然是地址的开头。故不会影响
为什么哨兵p.next=new IntNode(x, null)会使得first后加一个x?
--哨兵p沿着的是和first共有的地址链。故p添加后,会使得first后加x。