Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双链表_Java_Doubly Linked List - Fatal编程技术网

Java 双链表

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

我目前正在使用双链接列表(DLL)数据结构完成纸牌游戏的作业。我想从一副牌中随机选择4对牌,在不切换节点的情况下交换牌的内容。所以基本上,我们只是使用随机生成器,根据剩余的卡片数量随机分配卡片的索引。问题是我如何将索引分配给这些卡片并交换它们。在arraylist中,我们只需使用get和set方法。但是,对于双链表(DLL),我确认我们需要访问DLL类?有人能帮忙吗

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]中的随机整数。