ZBLOG

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

在给定的代码中,有几个错误需要修正:

  1. 需要定义节点类 Node,并为其提供合适的构造函数。
  2. CirSinglyList 类中,添加缺失的泛型参数 <T>
  3. addAll() 方法中,需要处理链表为空的情况。

下面是修正后的代码:

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 = null;
    }

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

            rear.next = this.head;
	}
    }

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

    public void addAll(int i, CirSinglyList<T> list) {
	if (list == null || list.head == null) {
	    return;
	}

	Node<T> front=this.head;
	Node<T> temp;
	Node<T> p=this.head;

	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;

	Node<T> last = list.head;

	while(last.next != list.head) {
	    last = last .next;
	}

	last .next = this.head ;
   }


    private static class Node<E>{
	E data;
	Node<E> next;

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

请注意,上述代码只是修正给定代码中的错误,并不能保证在所有情况下都能正确运行。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?