猿问

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

给你一个链表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++;
}
}
互换的青春
浏览 405回答 2
2回答

千巷猫影

伪代码://GetK-thelementofListNodeTypegetKElement(ListL,intk){...}//Mainintmain(){Node*p=P;while(p!=NULL){printgetKElement(L,p->value);p=p->next;}}上面的最好理解了因为P是已经排好序的,所以你也可以每次从上次的地方向下找,复杂度从$O(n^2)$变为$O(n)$。

largeQ

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)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答