如何在 Java 中制作循环列表



我想用Java做一个circular LinkedList。我有一个多边形,其中包含一个点列表。list必须是循环的。

我想创建循环列表:CircularList extends LinkedList但我不知道如何继续。

谢谢你的帮助。

LinkedList

对列表中的第一个和最后一个节点有 2 个引用。

LinkedList源代码:

/**
* Pointer to first node.
* Invariant: (first == null && last == null) ||
*            (first.prev == null && first.item != null)
*/
transient Node<E> first;
/**
* Pointer to last node.
* Invariant: (first == null && last == null) ||
*            (last.next == null && last.item != null)
*/
transient Node<E> last;

如您所见,第一个节点的"prev"成员设置为 null,最后一个节点的"下一个"成员设置为 null。 设置 first.prev= last 和 last.next=prev 将创建一个循环列表,但是(在这里小心)您必须覆盖 linkedlist 中的大多数插入、链接和删除操作以适应此更改。您可能还需要为迭代器编写一些代码。 这并非易事,因为您需要在迭代列表时跟踪停止的位置,否则您可能会陷入无限循环。 希望我说清楚了,答案有所帮助。 问候

这是您的快速解决方案。

检查以下代码以在 Java 中进行circular LinkedList

public static void main(String arg[]) {
CircularLinkedList cl = new CircularLinkedList();
cl.add(1);
cl.add(2);
cl.add(3);
cl.add(4);
cl.display();
}
public class Node{
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
public Node head = null;
public Node tail = null;
public void add(int data){
Node newNode = new Node(data);
if(head == null) {
head = newNode;
tail = newNode;
newNode.next = head;
}
else {
tail.next = newNode;
tail = newNode;
tail.next = head;
}
}
public void display() {
Node current = head;
if(head == null) {
System.out.println("List is empty");
}
else {
System.out.println("Nodes of the circular linked list: ");
do{
System.out.print(" "+ current.data);
current = current.next;
}while(current != head);
System.out.println();
}
}

希望这个例子能帮助你理解circular LinkedList的概念。

我有一个多边形,它由点列表组成。我有类点,多边形和列表循环。 这是我生气了:

import java.util.LinkedList;
public class ListCircPoly <Point> extends LinkedList {
private Node node;
private Node last;
private int size;
public ListCircPoly()
{
super();
node=null;//Création d'une chaine vide
last=null;
size=0;
}
/**
* @pre /
* @post ajoute une valeur en fin de list
* @param s valeur à stocker
* @return 
*/
@Override
public boolean add(Object s)
{
if (size==0)//Si la chaine est vide
{
this.node= new Node(s);
this.node.next=this.node;
last=node;
size=1;
}
else
{
Node addNode= new Node(s);
addNode.next=last.next;
last.next=addNode;
last=addNode;
size++;
}
return true;
}
public void print()
{
if (size>0)
{
System.out.println(this.node.data);
Node currentNode=this.node.next;
while (currentNode!=this.node)
{
System.out.println(currentNode.data);
currentNode=currentNode.next;
}
}
else System.out.println("Lise vide");
}
private class Node
{
private Object data;
private Node next;
public Node(Object data)
{
this.data=data;
this.next=null;
}
}
}

我想像链接列表一样使用它,但我的类多边形有问题。

相关内容

  • 没有找到相关文章

最新更新