为什么要学习数据结构和算法:
package task8;
/**
* 简单模拟单向链表的头插法和尾插法,并遍历打印测试
* @param <T>
*/
public class SingleList<T> {
int size = 0;
Node<T> head = new Node<>();
/**
* 尾插法,打印出来的元素是正序
* @param e
* @return
*/
public boolean add(T e) {
Node<T> tmp = head;
while (true) {
if (tmp.next == null) {
break;
}
tmp = tmp.next;
}
tmp.next = new Node<T>(e);
size++;
return true;
}
/**
* 头插法,所以打印出来的元素是逆序
* @param e
* @return
*/
public boolean add2(T e) {
Node<T> tmp = head;
Node<T> newNode = new Node<>(e);
newNode.next = tmp.next;
tmp.next = newNode;
size++;
return true;
}
//遍历
public void showList() {
Node<T> tmp = head;
while (true) {
if (tmp.next == null) {
return;
}
tmp = tmp.next;
System.out.println(tmp.getData());
}
}
class Node<T> {
T data;
Node<T> next;
public Node() {
}
public Node(T data) {
this.data = data;
}
public Node(T data, Node<T> next) {
this.data = data;
this.next = next;
}
public T getData() {
return data;
}
public void setData(T id) {
this.data = id;
}
public Node<T> getNext() {
return next;
}
public void setNext(Node<T> next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"data=" + data +
", next=" + next +
'}';
}
}
}
class DemoTest {
public static void main(String[] args) {
SingleList<Integer> list = new SingleList<>();
list.add2(1);
list.add2(2);
list.add2(0);
list.add2(-1);
list.add2(99);
list.add2(89);
list.showList();
System.out.println(list.size);
}
}