Java-数据结构与算法-逢3减1-面向对象
1.要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下来的人的下标
2.用面向对象思想,有三个步骤:
(1)有哪些类:找名词--"有一群人围成一圈",所以有类People,PeopleCircle
(2)有哪些属性方法
(3)类的关系
3.代码:
package Test; public class Count3Quit1$2 { public static void main(String[] args) {
PeopleCircle pc = new PeopleCircle(500);
int countNum = 0; People del = pc.getLast(); //先把位置指向last,一开始计数就会指向第一个元素
while(pc.getCount() > 1){
countNum++;
del = del.getRight();//跟踪当前的元素位置,且到了末尾会自动从头开始跟踪
if(countNum == 3){
pc.delete(del);
countNum = 0;
}
}
System.out.println(pc.getCount());
System.out.println(pc.getFirst());
System.out.println(pc.getLast());
} } //要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下来的人的下标
//用面向对象思想,有三个步骤:
//(1)有哪些类(2)有哪些属性方法(3)类的关系 //(1)有哪些类?找名词--"有一群人围成一圈",所以有类People,PeopleCircle
class People{ private int id;
private People left;
private People right; public People(int id) {
super();
this.id = id;
} public People getLeft() {
return left;
} public void setLeft(People left) {
this.left = left;
} public People getRight() {
return right;
} public void setRight(People right) {
this.right = right;
} @Override
public String toString() {
return "People-"+id;
}
} class PeopleCircle{ private int count = 0; public int getCount() {
return count;
} public PeopleCircle(int count) {
for(int i = 0; i < count ; i++){
add();
}
} private People first;
public People getFirst() {
return first;
} private People last; public People getLast() {
return last;
} public void add(){
People p = new People(count);
if(count <= 0 ){
p.setLeft(p);
p.setRight(p);
first = p;
last = p;
count++;
}else {
last.setRight(p);
p.setLeft(last);
p.setRight(first);
first.setLeft(p);
last = p;
count++;
}
} public void delete(People p){
if(count <= 0){
System.out.println("已经没有人!");
return;
}else if(count == 1){
first = last = null;
count--;
}else{
p.getLeft().setRight(p.getRight());
p.getRight().setLeft(p.getLeft()); if(p == first){
first = p.getRight();
}else if (p == last){
last = p.getLeft();
}
count--;
}
}
}
4.运行结果:
Java-数据结构与算法-逢3减1-面向对象的更多相关文章
- Java数据结构和算法 - 递归
三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
- Java数据结构和算法 - 数组
Q: 数组的创建? A: Java中有两种数据类型,基本类型和对象类型,在许多编程语言中(甚至面向对象语言C++),数组也是基本类型.但在Java中把数组当做对象来看.因此在创建数组时,必须使用new ...
- Java数据结构和算法(五)——队列
队列.queue,就是现实生活中的排队. 1.简单队列: public class Queqe { private int array[]; private int front; private in ...
- java数据结构和算法07(2-3-4树)
上一篇我们大概了解了红黑树到底是个什么鬼,这篇我们可以看看另外一种树-----2-3-4树,看这个树的名字就觉得很奇怪.... 我们首先要知道这里的2.3.4指的是任意一个节点拥有的子节点个数,所以我 ...
- Java数据结构和算法
首先,本人自学java,但是只学习了java的基础知识,所以想接下来学习一下数据结构和算法,但是找了很多教材,大部分写的好的都是用c语言实现的,虽然知道数据结构和算法,跟什么语言实现的没有关系,但是我 ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
- Java数据结构和算法(十四)——堆
在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现 ...
- Java数据结构和算法(九)——高级排序
春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大 ...
随机推荐
- [原]Java修炼 之 基础篇(一)Java语言特性
学习软件开发,首先要选择的就是选择需要采用的编程语言,考虑语言本身的优缺点和实际需求,综合评价之后选择相关的语言进行系统开发.本篇博客开始就从近年来比较流行的Java开始为大家讲起. 背景 1995年 ...
- 邻接表实现Dijkstra算法以及DFS与BFS算法
//============================================================================ // Name : ListDijkstr ...
- js数组排序
在JS中,sort方法可用于数组的排序:先来看一个例子: var arr = [1, 2, 3, 5, 7, 78, 8, 89]; arr.sort(); console.log(arr); // ...
- 【转】oracle查询不到表的问题
ORACLE的问题解决:Ora-00942:表或视图不存在 分类: 数据库2006-07-05 00:15 10793人阅读 评论(4) 收藏 举报 oraclesqlmanager 由powerde ...
- 使用AzCopy跨账户迁移blob
昨天北美紧急通知要停掉几个开发和测试的订阅,当天必须完成,因为事情比较多,搞得有点我措手不及,但是唯一的遗憾是Azure VM. 因为在上面做了很多东西,很多资料和环境都是做好的,如果被删除掉实在可惜 ...
- Linux sort --copy
Source: http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html sort是在Linux里非常常用的一个命令,管排序的,集中 ...
- 打印xls注意事项
1.ctrl+p 2.打印机选择 就绪的,不是脱机的,不要只看打印机的名字. 3.打印名单信息的话 要用横向打印 4.从数据库里导出来的数据xls可能在excel里没显示完全,比如学号.身份证号等(e ...
- matrix_world_final_2013
A http://acm.hust.edu.cn/vjudge/contest/view.action?cid=98960#problem/A 题意:给一个正方形,四边上有A-Z带+-,如果是00就不 ...
- 3-Highcharts 3D图之3D柱状图分组叠堆3D图
<!DOCTYPE> <html lang='en'> <head> <title>3-Highcharts 3D图之3D柱状图分组叠堆3D图</ ...
- Curse of Dimensionality
Curse of Dimensionality Curse of Dimensionality refers to non-intuitive properties of data observed ...