给你一个链表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-thelementofListNodeTypegetKElement(ListL,intk){...}//Mainintmain(){Node*p=P;while(p!=NULL){printgetKElement(L,p->value);p=p->next;}}上面的最好理解了因为P是已经排好序的,所以你也可以每次从上次的地方向下找,复杂度从$O(n^2)$变为$O(n)$。
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)
添加回答
举报
0/150
提交
取消