JAVA----关于数组模拟链表的练习总结
2017-10-02 00:50
274 查看
看到马士兵老师在Java视频讲解到数组模拟链表的问题,自己试着写出了程序,现在总结一下以免以后又对这个问题产生疑惑。
首先列出程序代码:
程序的目的是一个五百个数的数组,数三退一,最后算出数组在最后剩下的那个元素的下标。
这里总结如下:
一、数组的最后一个元素应该存储的是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的元素。
首先列出程序代码:
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的元素。
相关文章推荐
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 初学java——关于数组容易忽视的地方总结
- Java数组模拟链表解决约瑟夫问题
- java例程练习(数三退一[用数组模拟])
- 关于合并有序数组/链表的总结
- java有关于数组的几个练习
- Java基本功练习十五(关于对象的思考【ATM机模拟、贷款类、堆栈类、选课类的实现】)
- java例程练习(数三退一[用数组模拟])
- Java数组和链表模拟队列
- java例程练习(数三退一[用数组模拟])
- EasyDemo*Java 中关于String的空对象(null) ,空值(empty),空格的总结及小练习(on Github)
- 关于java数组排序的总结
- Java基本功练习八(多维数组[二维、三维、模拟评卷系统、九宫格验证])
- java中关于数组知识的小总结
- 团体程序设计天梯赛-练习集 L2-2. 链表去重 数组模拟链表
- (20120708)java数组练习(总结)
- java例程练习(数三退一[用数组模拟])
- 关于链表的一些总结和代码,java实现
- 关于java模拟ie 访问web网站的解决方法
- 关于java中switch选择分支的总结