读书人

java算法之数三退1

发布时间: 2013-08-01 15:23:18 作者: rapoo

java算法之数3退1
/** * 小孩 * @description Kid.class * @author zkf * @createTime 2013-7-16 */class Kid{private int id;private Kid left;//左手边小孩private Kid right;//右手边小孩public Kid(int id) {this.id = id;}public int getId() {return id;}public void setId(int id) {this.id = id;}public Kid getLeft() {return left;}public void setLeft(Kid left) {this.left = left;}public Kid getRight() {return right;}public void setRight(Kid right) {this.right = right;}}

?

?

2.模拟一个双向链表

?

? ?代码:?

/** * 链表 * @description LinkList.class * @author zkf * @createTime 2013-7-16 */class LinkList{int count = 0;//大小Kid last;//结尾Kid first;//开头/** * 增加Kid * @author zhangkefei * @createTime 2013-7-16  * @return void */public void  add(Kid kid){if(count == 0){last = kid;first = kid;kid.setLeft(last);kid.setRight(first);}else {kid.setLeft(last);kid.setRight(first);last.setRight(kid);first.setLeft(kid);last = kid;}count ++;}/** * 移除一个Kid * @author zhangkefei * @createTime 2013-7-16  * @return void */public void move(Kid kid){if(count == 0){return;}else if(count == 1){first = last = null;}else {kid.getLeft().setRight(kid.getRight()) ;kid.getRight().setLeft(kid.getLeft());if(kid == first){first = kid.getRight(); }else if(kid == last){last = kid.getLeft();}}count--;}/** * 返回链表的大小 * @author zkf * @createTime 2013-7-16 * @return int */public int getCount() {return count;}        /**         *返回链表第一个孩子         *@author zkf         *@createTime 2013-7-16         *@return Kid         */public Kid getLast() {return last;}        /**         *返回最后一个孩子         *@author zkf         *@createTime 2013-7-16         *@return Kid         */public Kid getFirst() {return first;}}

?

3.客户端测试?

??

? ?代码:

/** * 链表形式实现下面功能 * @description Test_11_Example.class * @author zkf * @createTime 2013-7-16 */public class Test {public static void main(String[] args) {//添加500元素LinkList ll = new LinkList();for (int i = 0; i < 500; i++) {ll.add(new Kid(i));}//数到三 删除一个元素int flag=1;Kid kid = ll.getFirst();while(ll.getCount()  >1){if(flag == 3){ll.move(kid);flag = 1;}else {flag++;}kid = kid.getRight();}System.out.println(ll.getFirst().getId());}}

?

4.结果:

??

435

?

?

?

读书人网 >编程

热点推荐