ZBLOG

public class CirSinglyList { public static void main(String arg[]) { Integer[] values=new Integer[10]; for(int i=0;i

这段代码是一个循环单链表的实现,包括了添加节点、构造函数和合并链表等操作。在主方法中创建了两个整数数组,并使用它们分别初始化了两个循环单链表对象list和list1。然后输出了这两个链表的字符串表示。接着调用addAll方法将list1合并到了list中,并输出合并后的链表。

需要注意的是,代码中使用了一个Node类来表示链表节点,但是你没有提供这个类的定义。可以参考下面给出的代码:

public class CirSinglyList<T> {
    public static void main(String arg[]) {
        Integer[] values = new Integer[10];
        for (int i = 0; i < values.length; i++) {
            values[i] = i + 1;
        }
        Integer[] value = new Integer[10];
        for (int j = 0; j < value.length; j++) {
            value[j] = j + 6;
        }
        CirSinglyList<Integer> list1 = new CirSinglyList<>(value);
        CirSinglyList<Integer> list = new CirSinglyList<>(values);
        System.out.println(list.toString());
        System.out.println(list1.toString());
        list.addAll(9, list1);
        System.out.println(list.toString());
    }

    public Node<T> head;

    public CirSinglyList() {
        this.head = new Node<T>();
    }

    public CirSinglyList(T[] values) {
        this();
        Node<T> rear = this.head;
        for (int i = 0; i < values.length; i++) {
            if (values[i] != null) {
                rear.next = new Node<T>(values[i], null);
                rear = rear.next;
            }
        }
        rear.next = this.head.next;
    }

    public String toString() {
        if (this.head.next == null) {
            return "()";
        }
        String str = "(";
        for (Node<T> p = this.head.next; p != this.head; p = p.next) {
            str += p.data.toString() + (p.next != this.head ? "," : "");
        }
        return str + ")";
    }

    public void addAll(int i, CirSinglyList<T> list) {

        Node<T> front = this.head;
        Node<T> temp;
        Node<T> p = this.head;
        if (list == null || list.head == null) {
            return;
        }
        for (int j = 0; j < i - 1; j++)
            front = front.next;
        
		while (p.next != this.head) {
            temp = list.head;
            while (temp.next != list.head) {
                if (temp.next.data.equals(p.next.data)) {
                    temp.next = temp.next.next;
                } else
                    temp = temp.next;
            }
            p=p.next;
	    }
		p. next= list. head. next ;
   }

   static class Node<T>{
       T data; // 数据域
       Node<T> next; // 指针域

       public Node(){
           next=null;
       }

       public Node(T data){
           this.data=data;
           next=null;
       }

       public Node(T data,Node<T> next){
           this.data=data;
           this .next=next;

}

这是修正后的代码,现在应该可以正常运行了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8396

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?