Java基础知识篇
1. 链表的基础知识
package com.leecode.competition.link;
public class LinkNode {
private int val;
private LinkNode next;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public LinkNode getNext() {
return next;
}
public void setNext(LinkNode next) {
this.next = next;
}
}
2. 实现链表的新增和删除
package com.leecode.competition.link;
import java.util.Random;
public class LinkBase {
private LinkNode mLinkNode;
public void test() {
mLinkNode = addLinkNode(0);
for(int i=1;i<10;i++){
addLinkNode(i);
}
Random r = new Random();
deleteLinkNode(r.nextInt(10));
printLinkNode(mLinkNode);
}
private void printLinkNode(LinkNode node) {
if (node == null) {
return;
}
LinkNode tempNode = node;
while (tempNode != null) {
System.out.println(tempNode.getVal());
tempNode = tempNode.getNext();
}
}
private LinkNode addLinkNode(int value) {
LinkNode node = new LinkNode();
node.setVal(value);
if (mLinkNode == null) {
mLinkNode = node;
return mLinkNode;
}
LinkNode tempNode = mLinkNode;
while (tempNode.getNext() != null){
tempNode = tempNode.getNext();
}
tempNode.setNext(node);
return mLinkNode;
}
private LinkNode deleteLinkNode(int value){
if(mLinkNode == null){
return null;
}
LinkNode nodeCurrent = mLinkNode;
if(nodeCurrent.getVal() == value){
mLinkNode = nodeCurrent.getNext();
}else {
LinkNode nodeHead = mLinkNode;
nodeCurrent = nodeCurrent.getNext();
while (nodeCurrent.getVal() != value && nodeCurrent != null) {
nodeCurrent = nodeCurrent.getNext();
nodeHead = nodeHead.getNext();
}
nodeHead.setNext(nodeCurrent.getNext());
}
return mLinkNode;
}
}
打印值如下所示:
1 2 3 4 5 6 7 8 9