要求是返回删除的从第i个结点开始、长度为n子表,改变this
public SinglyList remove(int i,int n)
{
int length=0;
for(Node r=this.head.next;r!=null;r=r.next)
length++;
Node p=this.head;
SinglyList list=new SinglyList();
Node q=list.head;
for(int j=0;p.next!=null&&j p=p.next;
Node now=p;
if(n<=length-i)
{
for(int j=0;p.next!=null&&j {
q.next=new Node(p.next.data,null);
}
now.next=p.next;
}
if(n>length-i)
{
for(int j=0;p.next!=null&&j<=length-i;j++,q=q.next,p=p.next)
{
q.next=new Node<T>(p.next.data,null);
}
now.next=null;
}
return list;
}
不知道有没有问题什么什么问题,,,,
题主可以测试测试呗,,
先说几个问题
【1】链表的话,for循环不给力啊,,,while合适点
【2】一次遍历应该就可以了,,题主这先求长度,再判断,再删除,,,,繁琐了,
.........
下面时伪代码,,仅供参考:
Node p = head;//先把指针放到开始,此处对象可以当指针用
while(p!=null){
p.value;//这个就是遍历链表取到的值
p = p.next;//访问下一个
}