zoukankan      html  css  js  c++  java
  • Java-数据结构与算法-逢3减1-面向对象

    1.要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下来的人的下标
    2.用面向对象思想,有三个步骤:
    (1)有哪些类:找名词--"有一群人围成一圈",所以有类People,PeopleCircle

    (2)有哪些属性方法

    (3)类的关系

    3.代码:

      1 package Test;
      2 
      3 public class Count3Quit1$2 {
      4 
      5     public static void main(String[] args) {
      6         PeopleCircle pc = new PeopleCircle(500);
      7         int countNum = 0;
      8         
      9         People del = pc.getLast(); //先把位置指向last,一开始计数就会指向第一个元素
     10         while(pc.getCount() > 1){
     11             countNum++;
     12             del = del.getRight();//跟踪当前的元素位置,且到了末尾会自动从头开始跟踪
     13             if(countNum == 3){
     14                 pc.delete(del);
     15                 countNum = 0;
     16             }
     17         }
     18         System.out.println(pc.getCount());
     19         System.out.println(pc.getFirst());
     20         System.out.println(pc.getLast());
     21     }
     22     
     23 }
     24 
     25 //要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下来的人的下标
     26 //用面向对象思想,有三个步骤:
     27 //(1)有哪些类(2)有哪些属性方法(3)类的关系
     28 
     29 //(1)有哪些类?找名词--"有一群人围成一圈",所以有类People,PeopleCircle
     30 class People{
     31     
     32     private int id;
     33     private People left;
     34     private People right;
     35     
     36     public People(int id) {
     37         super();
     38         this.id = id;
     39     }
     40 
     41     public People getLeft() {
     42         return left;
     43     }
     44 
     45     public void setLeft(People left) {
     46         this.left = left;
     47     }
     48 
     49     public People getRight() {
     50         return right;
     51     }
     52 
     53     public void setRight(People right) {
     54         this.right = right;
     55     }
     56     
     57     @Override
     58     public String toString() {
     59         return "People-"+id;
     60     }
     61 }
     62 
     63 class PeopleCircle{
     64     
     65     private int count = 0;
     66     
     67     public int getCount() {
     68         return count;
     69     }
     70 
     71     public PeopleCircle(int count) {
     72         for(int i = 0; i < count ; i++){
     73             add();
     74         }
     75     }
     76 
     77     private People first;
     78     public People getFirst() {
     79         return first;
     80     }
     81 
     82     private People last;
     83     
     84     public People getLast() {
     85         return last;
     86     }
     87 
     88     public void add(){
     89         People p = new People(count);
     90         if(count <= 0 ){
     91             p.setLeft(p);
     92             p.setRight(p);
     93             first = p;
     94             last = p;
     95             count++;
     96         }else {
     97             last.setRight(p);
     98             p.setLeft(last);
     99             p.setRight(first);
    100             first.setLeft(p);
    101             last = p;
    102             count++;
    103         }
    104     }
    105     
    106     public void delete(People p){
    107         if(count <= 0){
    108             System.out.println("已经没有人!");
    109             return;
    110         }else if(count == 1){
    111             first = last = null;
    112             count--;
    113         }else{
    114             p.getLeft().setRight(p.getRight());
    115             p.getRight().setLeft(p.getLeft());
    116             
    117             if(p == first){
    118                 first = p.getRight();
    119             }else if (p == last){
    120                 last = p.getLeft();
    121             }
    122             count--;
    123         }
    124     }
    125 }

    4.运行结果:

  • 相关阅读:
    webuploader多次触发注册
    下载二进制文件
    表格打印
    多个请求下 loading 的展示与关闭
    前进刷新后退不刷新
    页面权限控制和登陆验证
    axios.post 配置formdata提交
    react错误边界
    关于beforeRouterEnter获取不到this
    JS
  • 原文地址:https://www.cnblogs.com/shamgod/p/4604136.html
Copyright © 2011-2022 走看看