java定义一个循环单链表
时间: 2023-06-13 10:05:12 浏览: 94
基于java的循环单链表
以下是Java定义一个循环单链表的示例代码:
```java
public class CircularLinkedList {
private Node head;
private Node tail;
private int size;
private class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
public CircularLinkedList() {
head = null;
tail = null;
size = 0;
}
public boolean isEmpty() {
return size == 0;
}
public int getSize() {
return size;
}
public void add(int data) {
Node newNode = new Node(data);
if (isEmpty()) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
tail.next = head; // make the list circular
size++;
}
public void display() {
if (isEmpty()) {
System.out.println("List is empty");
} else {
Node current = head;
do {
System.out.print(current.data + " ");
current = current.next;
} while (current != head);
System.out.println();
}
}
}
```
在上述代码中,我们定义了一个内部类 `Node` 表示链表中的节点,其中包含一个 `int` 类型的数据域和一个指向下一个节点的 `next` 引用。`CircularLinkedList` 类包含了一个头节点 `head`、一个尾节点 `tail` 和链表的大小 `size`,并提供了一些常用的方法,如 `isEmpty()`、`getSize()`、`add()` 和 `display()` 等。
在 `add()` 方法中,我们首先创建一个新节点 `newNode`,然后判断链表是否为空。如果为空,将 `newNode` 赋给 `head` 和 `tail`,否则将 `newNode` 添加到链表的尾部。最后,将 `tail` 的 `next` 引用指向 `head`,使链表变为循环链表。
在 `display()` 方法中,我们使用 `do-while` 循环遍历整个链表,并输出每个节点的数据域。由于这是一个循环链表,所以当 `current` 指向 `head` 时,我们就可以退出循环了。
阅读全文