我的老师分配了一个程序,我要在其中创建一个随机数的链接列表。我要从列表中创建它,然后作业的第二部分是反转它。实际报价是
编写一个名为 reverseLinkedList(( 的 Java 方法,它将生成一个 从您在问题中创建的链接列表中反转链接列表 1. 您的方法应接受链表作为输入,并返回另一个链表,该链表的节点引用相反 次序。请不要反向打印原始列表。这个想法是 操作节点引用,以便节点保留在 顺序与最初创建的顺序相同。
到目前为止,我生成的代码看起来像
import java.util.*;
public class progassignment2
{
public static void main(String args[])
{
List<Integer> myList = new ArrayList<Integer>();
Random ran = new Random();
int ranNum;
for(int x = 0;x<5;x++)
{
ranNum = ran.nextInt(500);
myList.add(x,ranNum);
}
LinkedList<Integer> mylinklist = createLinkedList(myList);
System.out.println(mylinklist);
LinkedList<Integer> mylinklistrev = reverseLinkedList(mylinklist);
}
public static LinkedList createLinkedList(List<Integer> integerList)
{
LinkedList<Integer> linkedlist = new LinkedList<Integer>();
linkedlist.addAll(integerList);
return linkedlist;
}
public static LinkedList reverseLinkedList(LinkedList inputList)
{
for(int y = 0;y < inputList.size();y++)
{
inputList.addLast(inputList.pollFirst());
}
return inputList;
}
}
但是,我认为我没有正确完成作业,或者我理解他对我的要求,不幸的是不会回答任何问题,只是引用"阅读作业"。任何帮助都非常感谢
怎么样:
public static LinkedList reverseLinkedList(List<Integer> inputList) {
LinkedList<Integer> reversedLinkedlist = new LinkedList<Integer>(inputList);
Collections.reverse(reversedLinkedlist);
return reversedLinkedlist;
}
通常,链表上的练习不使用任何内置的Java集合(如ArrayList,LinkedList等(,而是旨在让您构建自己的集合类型。
你的老师可能希望你构建一个非常基本的元素,然后它将成为你自己的集合类型的构建块:想象一个对象,你可以在其中存储一个值和一个对列表中以下值的引用。在代码中:
class Node {
private int value;
private Node next;
public Node(int value){
this.value = value;
}
public int getValue(){
return value;
}
public Node getNext(){
return next;
}
public void setNext(Node next){
this.next = next;
}
}
每个元素都指向下一个元素,列表的末尾由最后一个节点的下一个元素null
标记。
通过使用这样的对象,您将能够定义自己的链表,而无需使用 Java 提供的任何预定义集合。
你肯定听说过stack
数据结构:通过读取链表中的所有元素并将它们放入堆栈中,一旦列表结束,你将获取堆栈内的元素;按照从堆栈中提取的元素顺序创建一个链表将解决反转链表的问题。
这个想法是操纵节点引用,以便节点 按最初创建的顺序保存。
您应该创建自己的链接列表。您不允许使用常见的反转方式,例如使用递归,堆栈,修改或任何集合接口方法。
以下是包含LinkedList
逆转方法和解决方案的链接:
class LinkedList {
Node head; // head of list
/* Linked list Node */
class Node {
int data;
Node next;
Node(int d) {
data = d;
next = null;
}
}
/* Function to print reverse of linked list */
void printReverse(Node head) {
if (head == null)
return;
// print list of head node
printReverse(head.next);
// After everything else is printed
System.out.print(head.data + " ");
}
/* Inserts a new Node at front of the list. */
public void push(int new_data) {
Node new_node = new Node(new_data);
new_node.next = head;
head = new_node;
}
public static void main(String args[]) {
LinkedList llist = new LinkedList();
llist.push(4);
llist.push(3);
llist.push(2);
llist.push(1);
llist.printReverse(llist.head);
}
}