Java 双链表
我目前正在使用双链接列表(DLL)数据结构完成纸牌游戏的作业。我想从一副牌中随机选择4对牌,在不切换节点的情况下交换牌的内容。所以基本上,我们只是使用随机生成器,根据剩余的卡片数量随机分配卡片的索引。问题是我如何将索引分配给这些卡片并交换它们。在arraylist中,我们只需使用get和set方法。但是,对于双链表(DLL),我确认我们需要访问DLL类?有人能帮忙吗Java 双链表,java,doubly-linked-list,Java,Doubly Linked List,我目前正在使用双链接列表(DLL)数据结构完成纸牌游戏的作业。我想从一副牌中随机选择4对牌,在不切换节点的情况下交换牌的内容。所以基本上,我们只是使用随机生成器,根据剩余的卡片数量随机分配卡片的索引。问题是我如何将索引分配给这些卡片并交换它们。在arraylist中,我们只需使用get和set方法。但是,对于双链表(DLL),我确认我们需要访问DLL类?有人能帮忙吗 public void swap() { int index1, index2; Card temp; R
public void swap() {
int index1, index2;
Card temp;
Random generator = new Random();
for(int i=0;i<4;i++){
index1 = generator.nextInt( cards.getSize() - 1 );
index2 = generator.nextInt( cards.getSize()- 1 );
//swapping codes here which im stuck here
}
}
public void swap(){
int index1,index2;
卡片温度;
随机生成器=新随机();
对于(int i=0;i,组的结构如下所示;组有一个DLL,其中有一个具有卡的节点。如果要在不更改DLL中节点的情况下交换卡,可以更改节点数据
字段
您已经有了所需卡片的索引,因此现在可以获取对节点的引用。因为您使用的是列表,没有比实现线性搜索更好的方法了。在DLL类中,您可以创建类似于public Node getNode(Int n)的方法
。在该方法中,从head n次循环到下一个节点,然后返回该节点
假设node1
和node2
是使用前面的方法或类似方法找到的类型node的参数。您可以交换类型node的T数据字段。在deck类中,现在DLL的类型是card
。因此,使用getData()
和setData()
方法交换值(交换一个节点的数据时,必须创建一个临时变量来保存这些数据).为什么不使用java.util.LinkedList
?不,这是我的任务。只能使用自己的DLL实现。@Everv0idDoublyLinkedList不应该是随机访问数据类型。你不能按索引访问节点。如果你需要交换两个节点-你需要交换上一个和下一个节点指针。如果是这样,我如何随机交换?@SergeyRYbalk从head
开始,并多次转到下一个节点n
,其中n
是[0,size]中的随机整数。