单链表基础练习
提供节点类
class NewInteger{
private int number;
private NewInteger next;
public NewInteger(int number){
this.number = number;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public NewInteger getNext() {
return next;
}
public void setNext(NewInteger next) {
this.next = next;
}
public String toString(){
return "["+number+"]";
}
}
获取单链表节点个数
public int getCount() {
NewInteger temp = head.getNext();
int count = 0;
while (temp != null) {
count++;
temp = temp.getNext();
}
return count;
}
查找倒数第k个节点
public NewInteger getLastP(int index){
NewInteger temp = head.getNext();
if (index <= 0 || index > this.getCount(){
return null;
}
for (int i = 0; i < getCount()-index; i++){
temp = temp.getNext();
}
return temp;
}
反转单链表
public void reverseLinked(){
NewInteger pre = null;
NewInteger temp = head.getNext();
NewInteger next;
if (temp == null || temp.getNext() == null){
return;
}
while (temp != null){
next = temp.getNext();
temp.setNext(pre);
pre = temp;
temp = next;
}
head.setNext(pre);
}
public void reverseByStack(){
NewInteger temp = head.getNext();
Stack<NewInteger> newInteger = new Stack<>();
if (temp == null || temp.getNext() == null){
return;
}
while (temp != null){
newInteger.push(temp);
temp = temp.getNext();
}
while (newInteger.size() != 0){
System.out.println(newInteger.pop());
}
}