Java基本代码利用单链表有效管理一个1~5的随机数序列,要求生成初始序列,保证序列中的元素值不重复,当增加或删除一个元素的时候,使序列元素值动态更新
时间: 2024-05-14 14:17:25 浏览: 89
好的,我明白您的问题。以下是Java基本代码,用单链表有效地管理一个1~5的随机数序列的方法,以及在增加或删除元素时保证序列元素值的动态更新。
首先,我们需要一个节点类来表示单链表中的每个节点。该节点将包含一个值(在此情况下是1到5之间的随机整数)和一个指向下一个节点的链接。以下是节点类的代码:
```java
public class Node {
// 节点的值
int value;
// 指向下一个节点的链接
Node next;
// 构造函数
public Node(int value) {
this.value = value;
this.next = null;
}
}
```
接下来,我们需要一个LinkedList类来管理单链表。该类将包含以下方法:
- `LinkedList()`: 构造函数,用于创建一个空链表。
- `generateRandomList()`: 生成一个包含1到5之间随机数字的序列,保证数字不重复。
- `addElement(int value)`: 在序列中添加一个元素。
- `deleteElement(int value)`: 在序列中删除一个元素。
- `printList()`: 打印当前序列的值。
下面是LinkedList类的代码:
```java
import java.util.Random;
public class LinkedList {
// 链表的头节点
Node head;
// 链表的长度
int size;
// 随机数生成器
Random rand;
// 构造函数,用于创建一个空链表
public LinkedList() {
this.head = null;
this.size = 0;
this.rand = new Random();
}
// 生成一个包含1到5之间随机数字的序列,保证数字不重复
public void generateRandomList() {
// 首先生成一个含有1到5的数字数组
int[] nums = new int[] {1, 2, 3, 4, 5};
// 然后随机打乱数组顺序
for (int i = 0; i < nums.length; i++) {
int j = rand.nextInt(nums.length);
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 将数组中的元素依次添加到链表中
for (int i = 0; i < nums.length; i++) {
addElement(nums[i]);
}
}
// 在序列中添加一个元素
public void addElement(int value) {
// 如果链表为空,则添加第一个元素
if (head == null) {
head = new Node(value);
size++;
return;
}
// 如果元素已经在序列中了,则不添加
Node current = head;
while (current != null) {
if (current.value == value) {
return;
}
current = current.next;
}
// 添加元素到链表末尾
current = head;
while (current.next != null) {
current = current.next;
}
current.next = new Node(value);
size++;
}
// 在序列中删除一个元素
public void deleteElement(int value) {
// 如果链表为空,则什么也不做
if (head == null) {
return;
}
// 如果要删除的元素是第一个元素,则更新头节点
if (head.value == value) {
head = head.next;
size--;
return;
}
// 如果要删除的元素在链表中,则删除之
Node previous = head;
Node current = head.next;
while (current != null) {
if (current.value == value) {
previous.next = current.next;
size--;
return;
}
previous = current;
current = current.next;
}
}
// 打印当前序列的值
public void printList() {
Node current = head;
while (current != null) {
System.out.print(current.value + " ");
current = current.next;
}
System.out.println();
}
}
```
现在,我们可以使用该类来有效地管理1到5之间的随机数字序列了。我们可以使用以下代码创建一个LinkedList实例并测试其方法:
```java
public static void main(String[] args) {
// 创建一个新的链表实例
LinkedList list = new LinkedList();
// 生成一个包含1到5之间随机数字的序列
list.generateRandomList();
// 打印链表中的元素
list.printList();
// 在链表中添加元素
list.addElement(6);
list.addElement(2);
// 打印链表中的元素
list.printList();
// 删除链表中的元素
list.deleteElement(1);
// 打印链表中的元素
list.printList();
}
```
输出将类似于以下内容:
```
3 5 1 4 2
3 5 1 4 2 6
3 5 4 2 6
```
阅读全文