/**
* @Description : 链表测试
* @Author : ch
* @Date: 2020-11-20
*/
public class LinkNode {
public static void main(String[] args) {
LinkedList L = new LinkedList();
L.init();
System.out.println("输入链表节点:");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
while (i!=-1){
// L.add(i);
L.show(i);
i = scanner.nextInt();
}
}
static class LinkedList{
class Node{
int data;
Node next;
}
Node head;//表头指针
void init(){head = new Node(); head.next = null;}
//打印链表
void show(int x){
Node q = new Node(); q.data=x;
System.out.println("Node节点:" + q.data);
}
//添加元素
void add(int x ){ //将x加入升序链表
Node pre,p,q;
for(pre=head,p=head.next;p!=null;p=p.next,pre=pre.next)
if(p.data>x) break;
q = new Node(); q.data=x;
q.next=p; pre.next=q;
}
//查找元素
Node find(int x){
Node pre,p;
pre= head; p= head.next;
while (p!=null && p.data!=x){
pre=pre.next; p=p.next;
}
if(p==null) return null;
return pre;
}
//删除元素
void del(int x){
Node pre = find(x);
if(pre==null) return;
else pre.next = pre.next.next;
}
}
}
从尾到头打印链表
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
// 头插法构建逆序链表
ListNode head = new ListNode(-1);
while (listNode != null) {
ListNode memo = listNode.next;
listNode.next = head.next;
head.next = listNode;
listNode = memo;
}
// 构建 ArrayList
ArrayList<Integer> ret = new ArrayList<>();
head = head.next;
while (head != null) {
ret.add(head.val);
head = head.next;
}
return ret;
}
public ListNode reverseList(ListNode head) {
if(head == null || head.next == null) return head;
ListNode ret = reverseList(head.next);
head.next.next = head;
head.next = null;
return ret;
}