这是今天老师给我们出的一道编程题,一开始觉得挺简单的,直觉告诉我应该可以直接用数组进行判断。但是我没做出来,可能是我想得太复杂了,思路不够清晰,自己把自己搅进去了。然后我就用环形链表来做的,其实这样做更容易理解。大体思路是这样:
1、创建一个环形链表,其中包含指向下一个结点(next)和上一个结点(pre)的引用
2、当找到一个结点后,就把该结点从链表上卸下来,具体操作就是让该结点的上一个结点的next指向该结点的next;
3、最后只剩下一个结点的时候就是最后的答案了!
创建链表类的时候如果对链表不熟会比较花时间!所以基础知识还是要掌握牢固呀哈哈
**********************这是链表类**************************
class ren{
int x;//表示人的序号
ren next;
ren pre=null;
ren head = null;
ren current=null;
ren last=null;
ren(){
super();
}
ren(int x){
this.x=x;
next=null;
}
public void inti(int n) {
for(int i=1; i<=n; i++) {
if(i==1) {
head=new ren(i);
current=head;
}else {
current.next=new ren(i);//下面这三行代码比较绕,哈哈
current.next.pre=current;
current=current.next;
last=curr