Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Data Structures_Nodes - Fatal编程技术网

Java 多链表的实现

Java 多链表的实现,java,list,data-structures,nodes,Java,List,Data Structures,Nodes,我正在尝试为一个项目用Java实现多链接列表 package project1; import java.lang.IllegalArgumentException; import project1.MLLNode; class MLList { private int nbSets; private MLLNode head; public MLList(int _nbSets) { if (_nbSets <= 0)

我正在尝试为一个项目用Java实现多链接列表

package project1;  
import java.lang.IllegalArgumentException;
import project1.MLLNode;

class MLList {
    private int nbSets;
    private MLLNode head;

    public MLList(int _nbSets) {
        if (_nbSets <= 0)
            throw(new IllegalArgumentException("- Illegal Number of Sets (" +
      _nbSets + ")!"));
        nbSets = _nbSets;
        head = MLLNode.create(0,null);
    }

    public boolean isEmpty(MLLNode.LType ltype) {
        return(head.getNext(ltype) == null);
    }

    public void display(MLLNode.LType ltype) {
       System.out.print("[ ");
        MLLNode node = head.getNext(ltype);
        while(node != null) {
            node.display();
            System.out.print(" ");
            node = node.getNext(ltype);
        }
        System.out.print("]");
    }


    public boolean insert(int id, Object data) {
        MLLNode newnode = MLLNode.create(id, data);
        if(isEmpty(MLLNode.LType.ALL)){
            head.setNext(MLLNode.LType.ALL, newnode);
            newnode.setNext(MLLNode.LType.ALL, null);
        }else{
            MLLNode first = head.getNext(MLLNode.LType.ALL);
            head.setNext(MLLNode.LType.ALL, newnode);
            newnode.setNext(MLLNode.LType.ALL, first);
        }
        if(isEmpty(MLLNode.LType.XOR)){
            head.setNext(MLLNode.LType.XOR, newnode);
            newnode.setNext(MLLNode.LType.XOR, null);
        }else{
            MLLNode first = head.getNext(MLLNode.LType.XOR);
            head.setNext(MLLNode.LType.XOR, newnode);
            newnode.setNext(MLLNode.LType.XOR, first);
        }
        if(isEmpty(MLLNode.LType.ANY)){
            head.setNext(MLLNode.LType.ANY, newnode);
            newnode.setNext(MLLNode.LType.ANY, null);
        }else{
            MLLNode first = head.getNext(MLLNode.LType.ANY);
            head.setNext(MLLNode.LType.ANY, newnode);
            newnode.setNext(MLLNode.LType.ANY, first);
         }
        return true;
    }
}

public Object delete(int id) {
        if (!isEmpty(MLLNode.LType.ALL)){
            MLLNode previous = head;
            MLLNode current = head.getNext(MLLNode.LType.ALL);
            int obj_id = 0;
            while(obj_id != id && current != null){
                previous = current;
                current = current.getNext(MLLNode.LType.ALL);
                obj_id++;
            }
            if (current != null){
                previous.setNext(MLLNode.LType.ALL, current.getNext(MLLNode.LType.ALL));
            }else{
                previous.setNext(MLLNode.LType.ALL, null);
            }
            return current;
        }

        if (!isEmpty(MLLNode.LType.XOR)){
            MLLNode previous = head;
            MLLNode current = head.getNext(MLLNode.LType.XOR);
            int obj_id = 0;
            while(obj_id != id && current != null){
                previous = current;
                current = current.getNext(MLLNode.LType.XOR);
                obj_id++;
            }
            if (current != null){
                previous.setNext(MLLNode.LType.XOR, current.getNext(MLLNode.LType.XOR));
            }else{
                previous.setNext(MLLNode.LType.XOR, null);
            }
            return current;
        }

        if (!isEmpty(MLLNode.LType.ANY)){
            MLLNode previous = head;
            MLLNode current = head.getNext(MLLNode.LType.ANY);
            int obj_id = 0;
            while(obj_id != id && current != null){
                previous = current;
                current = current.getNext(MLLNode.LType.ANY);
                obj_id++;
            }
            if (current != null){
                previous.setNext(MLLNode.LType.ANY, current.getNext(MLLNode.LType.ANY));
            }else{
                previous.setNext(MLLNode.LType.ANY, null);
            }
            return current;
        }

        return null;

              }



public Object find(MLLNode.LType ltype, int id) {

    }
packageproject1;
导入java.lang.IllegalArgumentException;
导入project1.MLLNode;
类别列表{
私人国际电视台;
专用MLLNode头;
公共MLList(整数集){

如果(_nbSets欢迎来到stackoverflow!请查看常见问题解答,了解如何提出好的问题,以便获得好的答案。您至少应该自己尝试过一些东西,最好展示一些您尝试过的代码(不仅仅是练习中的样板代码),谢谢您的建议,先生!)我同意你提出的观点,但我只需要一个想法。不是代码本身:)我在这里取得了一些进展,但我坚持这一点:/有想法吗?你说“你被卡住了”是什么意思?什么有效?什么不起作用?你希望非工作部分做什么?它们做什么?它运行并显示如下:-Any:[9(0)8(0)4(0)10(0)14(0)10(0)6(0)3(0)19(0)15(0)18(0)]-所有:[9(0)8(0)4(0)10(0)10(0)14(0)10(0)6(0)3(0)19(0)15(0)]-异或:[9(0)8(0)4(0)10(0)14(0)10(0)6(0)6(0)3(0)19(0)15(0)]我创建了一个显示列表的应用程序,但我需要在这里显示计数器值
package project1;
import java.util.EnumMap;

class MLLNode {

    public enum LType {ANY, ALL, XOR};
    public int count;
    public int id;
    public Object data;

    private EnumMap<LType,MLLNode> next;

    private MLLNode(int _id, Object _data) {
        id = _id;
        data = _data;
        count = 0;
        next = new EnumMap<LType,MLLNode>(LType.class);
        next.put(LType.ANY,null);
        next.put(LType.ALL,null);
        next.put(LType.XOR,null);
    }

    public static MLLNode create(int _id, Object _data) {
        return(new MLLNode(_id,_data));
    }

    public MLLNode getNext(LType ltype) {
        return(next.get(ltype));
    }

    public MLLNode setNext(LType ltype, MLLNode ref) {
        next.put(ltype, ref);
        return(ref);
    }

    public void display() {
        System.out.print(id + " (" + count + ")");
    }
}