Java 链表元素如何从键盘输入 面试 笔试高频
Java 链表元素如何从键盘输入 面试 笔试高频
直接上代码:
import java.util.Scanner;class ListNode{int value;ListNode next;// ListNode的构造函数public ListNode() {};public ListNode(int value) {this.value = value;}public ListNode(int value, ListNode next) {this.value = value;this.next = next;}
}public class Solution {public static void main(String[] args) {// 新建链表第一个头节点ListNode newNode = new ListNode();ListNode head = newNode; Scanner in = new Scanner(System.in);// 从键盘上输入整数,新建节点,以“0”为结束符while(in.hasNext()) {int value = in.nextInt();if(value == 0) {break;}ListNode next = new ListNode(value);// 从头节点往后插入新的节点insertNodeToHead(next,head);head = next;}// 打印新建的链表ListNode currNode = newNode.next;while(currNode != null) {if(currNode.next != null){System.out.print(currNode.value + "->");}else {System.out.print(currNode.value);}currNode = currNode.next;}System.out.println();// 链表反转操作ListNode taiNode = reverseListNode(newNode);// 打印反转后的链表currNode = taiNode;while(currNode.value != 0) {if(currNode.next.value != 0){System.out.print(currNode.value + "->");}else {System.out.print(currNode.value);}currNode = currNode.next;}}// 链表反转操作public static ListNode reverseListNode(ListNode head) {ListNode pre = null;ListNode currNode = head;while(currNode != null) {ListNode nextNode = currNode.next;currNode.next = pre;pre = currNode;currNode = nextNode;}return pre;}// 从头节点往后插入新的节点public static void insertNodeToHead(ListNode node, ListNode head) {head.next = node;}
}
现场演示结果:
直接输入: 1 3 5 2 4 6 0;
得到结果: