您的位置:首页 > 编程语言 > Java开发

JAVA----关于数组模拟链表的练习总结

2017-10-02 00:50 274 查看
看到马士兵老师在Java视频讲解到数组模拟链表的问题,自己试着写出了程序,现在总结一下以免以后又对这个问题产生疑惑。

首先列出程序代码:

public class ArrayToLinkList {
public static void main(String[] args) {
int[] a = new int[500];
for(int i=0; i<a.length-1; i++) {
a[i] = i+1;
}
a[a.length-1] = 0;
int index = 0;
int before = 0;
int = 0;
while(a[index] != index) {
countThree++;
if(countThree== 3) {
countThree= 0;
a[before] = a[index];

}
before = index;
index = a[index];
}

System.out.println(a[index]);

}
}


程序的目的是一个五百个数的数组,数三退一,最后算出数组在最后剩下的那个元素的下标。

这里总结如下:

一、数组的最后一个元素应该存储的是0。

二、a[0]的值是下一个数组元素的下标,也就是说循环中要用到下一个元素不是index++; 而应该是index=a[index];

三、因为程序是数三退一,所以数到三,也就是countThree==3时,当前index应该被退出,所以index之前的元素值不能为index 而应该变成 a[index]的值,这里需要用到index之前的元素,所以每次在index=a[index]之前要存储index值,即before=index;

四、上面条件满足之后就要让a[before] = a[index],这样就相当退出了当前index的元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息