魔术师发牌问题 java_魔术师发牌问题--java实现
packagecom.wyl.linklist;/****問題名稱:魔術(shù)師發(fā)牌問題
*問題描述:魔術(shù)師手里一共有13張牌,全是黑桃,1~13.
*********魔術(shù)師需要實現(xiàn)一個魔術(shù):這是十三張牌全部放在桌面上(正面向下),
********第一次摸出第一張,是1,翻過來放在桌面上。
******第二次摸出從上往下數(shù)第二張,是2,翻過來 放在桌面上,(第一張放在最下面去,等會兒再摸),
*****第三次摸出從上往下數(shù)第三張,是3,翻過來放在桌面上,(第一張和第二張 放在最下面去,等會兒再摸)
*** 以此類推 最后一張就是13
*
* 方法:
* 1、創(chuàng)建一個長度為13的單向循環(huán)鏈表,鏈表中值全部存0
* 2、遍歷鏈表進(jìn)行修改值
*@authorwyl
**/
public classMagicCord {private Node head; //定義鏈表的頭結(jié)點
/*** 創(chuàng)建鏈表中的Node類*/
classNode{privateInteger data;privateNode next;publicNode(){
}publicNode(Integer data){this(data, null);
}publicNode(Integer data, Node next) {this.data =data;this.next =next;
}publicInteger getData() {returndata;
}public voidsetData(Integer data) {this.data =data;
}publicNode getNext() {returnnext;
}public voidsetNext(Node next) {this.next =next;
}
}/*** 構(gòu)造函數(shù)中直接初始化長度為13的循環(huán)鏈表
* 第一個節(jié)點的值默認(rèn)為1*/
publicMagicCord(){
head= new Node(1);
Node p=head ;int i = 1;while(p.next == null && i < 13){
Node newNode= new Node(0);
p.next=newNode;
p=p.next;
i++;
}
p.next= head; //構(gòu)建循環(huán)鏈表
}//打印循環(huán)鏈表
public voidprint(){
Node p=head;int i = 0;while(i++<13){
System.out.print(p.data+ "、");
p=p.next ;
}
}//循環(huán)修改節(jié)點的值
public voidmagic(){int i = 2; //從2開始存數(shù)字到13
Node p = head; //指針p指向head,用來控制每次指針移動的下一個位置
for(;i<=13;i++){for(int j = 0; j
p=p.next;if(p.data != 0){
j--;
}
}
p.data=i;
}
}public static voidmain(String[] args) {
MagicCord magicCord= newMagicCord();
magicCord.print();
magicCord.magic();
System.out.println();
magicCord.print();
}
}
總結(jié)
以上是生活随笔為你收集整理的魔术师发牌问题 java_魔术师发牌问题--java实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java entity公共属性_java
- 下一篇: mysql 获取子分类_MySQL 自定