为了账号安全,请及时绑定邮箱和手机立即绑定

关于链表的一道题,求大神教教!!

关于链表的一道题,求大神教教!!

互换的青春 2019-04-07 09:38:25
给你一个链表L和一个链表P,它们包含已升序排列的整数。操作printLots(L,P)将打印L中那些由P所指定的位置的元素。例如P=1,3,4,6.那么L中的第1个,第三个,第四个,第六个将会被打印出来。从《数据结构与算法分析》中看到的。下面是我的代码,顺便请各位大大批评纠正。。我要疯了。publicvoidprintLot(ListNodea,ListNodeb){intcount=0;intindex=0;m=newListNode(0);while(a.next!=null){if(count==index){m=m.next;m.element=a.element;b=b.next;index=b.element;}a=a.next;count++;}}
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

伪代码:
//GetK-thelementofList
NodeTypegetKElement(ListL,intk)
{
...
}
//Main
intmain(){
Node*p=P;
while(p!=NULL){
printgetKElement(L,p->value);
p=p->next;
}
}
上面的最好理解了
因为P是已经排好序的,所以你也可以每次从上次的地方向下找,复杂度从$O(n^2)$变为$O(n)$。
                            
查看完整回答
反对 回复 2019-04-07
?
largeQ

TA贡献2039条经验 获得超7个赞

publicstaticvoidprintLot1(LinkLista,LinkListb){
LinktempB=b.getFirst();
while(tempB!=null){
intcount=tempB.dData;//b中元素,对应a中的下标
LinktempA=a.getFirst();
intindex=0;//扫描到a的第几个元素
while(tempA!=null){
if(count==index){
System.out.println(tempA.dData+"");
break;
}
index++;
tempA=tempA.next;
}
tempB=tempB.next;
}
}
O(n^2)
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 404 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信