用面向对象的思维去解决数三退一。关键字,双向环形链表。
来源:互联网 发布:潭州学院java视频下载 编辑:程序博客网 时间:2024/05/16 14:21
//建立独立的结点class Node{int id; //节点编号Node left; //左节点Node right;//右节点}//设定环形链表的体量class NodeCircle{int count = 0;//计数器归零Node first;//头节点Node last;//尾节点 //创建构造函数接口,以便建立需要的链表体量NodeCircle(int count){for(int i = 0; i < count; i++){add();//添加链表节点的方法}} //添加节点方法的定义void add(){Node node = new Node();//java区分大小写node.id = count;if (count == 0){//判断当前是否是在创建头节点first = node;//当创建头节点时,设计的头节点是被创建者自身last = node;//当创建头节点时,设计的尾节点是被创建者自身node.left = node;//被创建的节点,左侧赋值是自身node.right = node;//被创建的节点,右侧赋值是自身}else{ //默认添加节点在尾端 last.right = node; //添加节点的思路,可以套用国家间的外交,即,双向双方互认node.left = last;node.right = first;first.left = node;last = node;}count++;}void remove(Node node){if (count == 0){System.out.println("当前链表无记录,删除操作不可执行");}else if ( count == 1){first = last = null;System.out.println("当前链表记录唯一,删除后清空");}else{node.left.right = node.right;node.right.left = node.left;if (node == first){first = node.right;}else if (node == last){last = node.left;}}count--;}}public class DoublyLinked {public static void main(String[] args) {NodeCircle nc = new NodeCircle(500);int countNum = 0;Node nod = nc.first;while (nc.count > 1){countNum++;if (countNum == 3){countNum = 0;nc.remove(nod);}nod = nod.right;}System.out.println(nc.first.id+1);}}关键技术点已经在注释中标明
0 0
- 用面向对象的思维去解决数三退一。关键字,双向环形链表。
- 带哨兵的环形双向链表
- List环形双向链表
- 面向对象的思维
- 面向对象的思维
- 丢手帕问题的双向环形链表实现
- C++双向环形链表模板类
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方法
- 面向对象的思维方式
- 面向对象的思维方法
- 【LA3516】Exploring Pyramids——动态规划+乘法原理
- 商业日志管理系统发展史
- Android自定义控件三部曲文章索引
- 贪心算法5之1012
- corethink功能模块探索开发(八)净化后台首页的系统信息
- 用面向对象的思维去解决数三退一。关键字,双向环形链表。
- day11 JSP和EL的入门,两个会话技术:cookies和session
- C# 已知圆心和两点,用DrawArc()画圆弧(算法)
- 银线蕨-我的啊银
- 红眼病
- 简述泛型算法之 三bind_参数绑定
- 总结Cocos2d-x 3.0 中新字体标签Label
- 跟着9张思维导图学习Javascript
- 2016-3-28--C#的is和as操作符