锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
class Node {
Object item; Node next;
Node (Object v) {
item = v; next = null;
}
}
澶存寚閽堬紝絀哄熬鎸囬拡
鍒濆鍖栵細head = null;
鍦?/SPAN>x鍚庢彃鍏?/SPAN>t錛?/SPAN>
if ( x == null)
{ head = t; head.next = null; }
else { t.next = x.next; x.next = t; }
縐昏蛋x涔嬪悗鐨勭粨鐐癸細t = x.next; x.next = t.next;
寰幆閬嶅巻錛?/SPAN>for ( t = head; t != null; t = t.next )
媯鏌ラ摼琛ㄦ槸鍚︿負絀猴細if ( head == null )
絀哄ご緇撶偣錛岀┖灝炬寚閽?/SPAN>
鍒濆鍖栵細head = new Node(); head.next = null;
鍦?/SPAN>x鍚庢彃鍏?/SPAN>t錛?/SPAN>t.next = x.next; x.next = t;
縐昏蛋x涔嬪悗鐨勭粨鐐癸細t = x.next; x.next = t.next;
寰幆閬嶅巻錛?/SPAN>for ( t = head.next; t != null; t = t.next )
媯鏌ラ摼琛ㄦ槸鍚︿負絀猴細if ( head.next == null )
絀哄ご緇撶偣錛岀┖灝劇粨鐐?/SPAN>
鍒濆鍖栵細head = new Node(); z = new Node(); head.next = z; z.next = z;
鍦?/SPAN>x鍚庢彃鍏?/SPAN>t錛?/SPAN>t.next = x.next; x.next = t;
縐昏蛋x涔嬪悗鐨勭粨鐐癸細t = x.next; x.next = t.next;
寰幆閬嶅巻錛?/SPAN>for ( t = head.next; t != z; t = t.next )
媯鏌ラ摼琛ㄦ槸鍚︿負絀猴細if ( head.next == z )
寰幆閾捐〃
絎竴嬈℃彃鍏ワ細head.next = head;
鍦?/SPAN>x鍚庢彃鍏?/SPAN>t錛?/SPAN>t.next = x.next; x.next = t;
縐昏蛋x涔嬪悗鐨勭粨鐐癸細t = x.next; x.next = t.next;
寰幆閬嶅巻錛?/SPAN>t = head; do { t = t.next; } while ( t != head );
媯鏌ユ槸鍚﹀彧鏈変竴涓暟鎹」錛?/SPAN>if ( head.next == head )
鍫嗘爤
鏁扮粍瀹炵幇
class Stack {
private Object[] s;
private int n;
Stack ( int maxN ) {
s = new Object[maxN]; n = 0;
}
boolean isEmpty() { return ( n == 0 ); }
void push ( Object item ) { s[n++] = item; }
Object pop() {
Object t = s[--n]; s[n] = null; return t;
}
}
閾捐〃瀹炵幇
class Stack {
private Node head;
private class Node {
Object item; Node next;
Node ( Object item, Node next ) {
this.item = item; this.next = next;
}
}
Stack ( Object maxN ) { head = null; }
boolean isEmpty() { return ( head ==null ); }
void push ( Object item ) { head = new Node(item, head); }
Object pop() {
Object v = head.item;
Node t = head.next;
head = t;
return v;
}
}
FIFO闃熷垪鐨勯摼琛ㄥ疄鐜?/SPAN>
class Queue {
private class Node {
Object item; Node next;
Node ( Object item ) {
this.item = item; this.next = null;
}
}
Private Node head, tail;
Queue ( Object max ) { head = null; tail = null; }
boolean isEmpty() { return ( head ==null ); }
void put ( Object item ) {
Node t = tail;
tail = new Node(item);
if ( empty() )
head = tail;
else t.next = tail
}
Object get() {
Object v = head.item;
Node t = head.next;
head = t;
return v;
}
}
鍦ㄥ緢澶氬疄闄呭簲鐢ㄤ腑錛屾垜浠兘涓嶅厑璁稿瓨鍦ㄦ暟鎹」閲嶅鐨勬儏鍐碉紝闇瑕佸鐢ㄦ埛鎻愪氦鐨勯噸澶嶆暟鎹繘琛屽悎閫傜殑澶勭悊銆傝鐢ㄦ埛淇濊瘉涓嶆彁浜ら噸澶嶇殑鏁版嵁鍙互閬垮厤榪欑鎯呭喌鐨勫彂鐢燂紝浣嗘樉鐒惰繖縐嶆柟娉曞茍涓嶅疄闄咃紝鏃㈢劧浣跨敤ADT灝辨槸涓轟簡緇欎嬌鐢ㄥ畠鐨勭▼搴忓憳鎻愪緵綆鍗曟槑浜嗙殑鏁版嵁綾誨瀷瑙e喅鏂規錛岄偅涔堟垜浠氨搴旇鍦?/SPAN>ADT涓潵瑙e喅榪欎釜闂銆備互闃熷垪涓轟緥錛屼竴鑸彲浠ラ氳繃涓ょ絳栫暐鏉ュ鐞嗚繖涓棶棰橈細
1. 鏀懼純鏂拌緭鍏ョ殑鏁版嵁欏癸細褰撴渶鏂版斁鍏ラ槦鍒椾腑鐨勬暟鎹」宸茬粡鍦ㄩ槦鍒椾腑鏃訛紝鏀懼純褰撳墠杈撳叆鐨勬暟鎹」銆?/SPAN>
2. 鏀懼純鏃х殑鏁版嵁欏癸紝淇濆瓨鏂拌緭鍏ョ殑鏁版嵁欏癸細褰撴渶鏂版斁鍏ラ槦鍒椾腑鐨勬暟鎹」宸茬粡鍦ㄩ槦鍒椾腑鏃訛紝鏀懼純宸茬粡瀛樺湪浜庨槦鍒椾腑鐨勬暟鎹」錛屼繚瀛樺綋鍓嶆斁鍏ョ殑鏁版嵁欏廣?/SPAN>
鏁扮粍鍜岄摼琛ㄦ槸鏁版嵁緇撴瀯涓佺敓甯歌皥鐨勯棶棰橈紝鍦ㄦ寚閽堟垨鏄紩鐢ㄨ繖浜涙蹇靛嚭鏉ヤ箣鍓嶏紝鏁扮粍灝辮兘鐢ㄦ潵瀹炵幇閾捐〃鐨勫姛鑳姐傝繖閲屾墍璇寸殑閾捐〃鎸囩殑灝辨槸鐢ㄦ寚閽堟垨瀵硅薄鐨勫紩鐢ㄦ潵璁捐鐨勯摼琛ㄣ?/SPAN>
鍦ㄥ疄闄呯殑搴旂敤寮鍙戜腑錛屾暟緇勭敱浜庡畠澶╃敓鐨勭縐嶇壒鎬?/SPAN>(鍙傝?A href="/flyingis/archive/2005/12/15/24089.html" target=_blank>銆?/FONT>Java瀹瑰櫒鍒嗘瀽鈥?/SPAN>鏁扮粍銆?/SPAN>)錛屾洿澶氱殑浼氳寮鍙戜漢鍛樻墍鎯沖埌鐢ㄥ埌錛屼絾鎵鏈夌殑鏁版嵁緇撴瀯閮芥湁瀹冪壒瀹氱殑閫傜敤鍦哄悎銆備紬鎵鍛ㄧ煡錛屾暟緇勫拰閾捐〃鏈澶х殑鍖哄埆鍦ㄤ簬錛屼嬌鐢ㄦ暟緇勮兘澶熷揩閫熻闂暟緇勪腑鐨勬瘡涓厓绱狅紝鑰屼嬌鐢ㄩ摼琛ㄥ彲浠ユ柟渚跨殑鎿嶇旱姣忎釜鏁版嵁欏廣備笅闈㈤氳繃涓や釜寰堟湁瓚g殑渚嬪瓙璇存槑浜嗗畠浠悇鑷殑鍖哄埆涓庝紭鍔褲?/SPAN>
铏界劧鍦?/SPAN>JDK涓?/SPAN>Java鎻愪緵浜?/SPAN>List鎺ュ彛鍙婂叾鎺ュ彛鐨勫疄鐜?/SPAN>(ArrayList/LinkedList)瀵歸摼琛ㄦ暟鎹粨鏋勬彁渚涗簡鏈夊姏鐨勬敮鎸侊紝鍏蜂綋鍙互鍙傝?A href="/flyingis/archive/2005/12/21/24951.html" target=_blank>銆?/FONT>Java瀹瑰櫒鍒嗘瀽鈥擫ist鍜孲et銆?/FONT>浣嗕笅闈㈡暟瀛︿笂鍏充簬Josephus闂鐨勫疄鐜頒粎浣跨敤浜嗚嚜瀹氫箟鐨勬渶綆鍗曠殑閾捐〃緇撴瀯銆?/SPAN>
/**
* 鏍規嵁鍛戒護琛岃緭鍏ョ殑N鍊鹼紝璁$畻鍑烘墍鏈夊皬浜?/SPAN>N鐨勭礌鏁?/SPAN>
* 鏄礌鏁板皢鏁扮粍鍏冪礌鍊艱涓?/SPAN>true錛屽惁鍒欒涓?/SPAN>false
*/
class ArrayApp {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
boolean[] a = new boolean[N];
for (int i = 2; i < N; i++)
a[i] = true;
for (int i = 2; i < N; i++)
if (a[i] != false)
for (int j = i; j*i < N; j++)
a[i*j] = false;
for (int i = 2; i < N; j++)
if (a[i])
System.out.println(鈥溾?+ i);
}
}
/**
* N涓湁緙栧彿鐨勫皬鐞冨洿鎴愪竴鍦堬紝姣忎釜M-1涓氨鎷垮幓涓涓皬鐞冿紝璁$畻鏈鍚庡墿涓嬬殑鐞冪殑浣嶇疆
*/
class LinkApp {
static class Node {
int value;
Node next;
Node (int v) { v = value; }
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
int M = Integer.parseInt(args[1]);
Node first = new Node(1);
Node x = first;
for (int i = 2; i <= N; i++)
x = (x.next = new Node(i));
x.next = first;
while (x != x.next) {
for (int i = 1; i < M; i++)
x = x.next;
x.next = x.next.next;
}
System.out.println(鈥?/SPAN>鏈鍚庡墿涓嬬殑灝忕悆錛?/SPAN>鈥?+ x.value);
}
}
瑕佹兂鍏呭垎鐞嗚В綆楁硶騫舵湁鏁堝湴搴旂敤浜庡疄闄呴棶棰橈紝鍏抽敭鏄綆楁硶鐨勫垎鏋愩傞氬父鎴戜滑鍙互鍒╃敤瀹為獙瀵規瘮鍒嗘瀽銆佹暟瀛︽柟娉曟潵鍒嗘瀽綆楁硶銆傚疄楠屽姣斿垎鏋愬緢綆鍗曪紝涓や釜綆楁硶鐩鎬簰姣旇緝錛屽畠浠兘鑳借В鍐沖悓涓闂錛屽湪鐩稿悓鐜涓嬶紝鍝釜綆楁硶鐨勯熷害蹇垜浠竴鑸氨浼氳涓鴻繖涓畻娉曟ц兘鏇村ソ銆傛暟瀛︽柟娉曡兘灝嗙畻娉曞垎鏋愮殑鏇翠負緇嗚嚧錛岃兘鍦ㄤ弗瀵嗙殑閫昏緫鎺ㄧ悊鍩虹涓婂垽鏂畻娉曠殑浼樺姡錛屼絾鍦ㄥ畬鎴愬疄闄呴」鐩繃紼嬩腑錛屾垜浠緢澶氭椂鍊欓兘涓嶈兘鍘誨仛榪欑涓ュ瘑鐨勮璇佷笌鎺ㄦ柇錛屽洜涓烘垜浠笉鏄湪瀹屾垚涓閬撴暟瀛﹂毦棰橈紝涔熶笉鏄暟瀛﹂鍩熺殑涓撳錛屽皢澶ч噺鐨勬椂闂磋姳璐瑰湪鍏紡鐨勮綆椾笌璇佹槑涓婁細瀵艱嚧鏁翠釜欏圭洰榪涘害緙撴參銆佹垚鏈繃楂橈紝鍥犳錛屽湪綆楁硶璁捐涓紝鎴戜滑寰寰閲囩敤鑳借繎浼艱〃杈炬ц兘鐨勬柟娉曟潵灞曠ず鏌愪釜綆楁硶鐨勬ц兘鎸囨爣銆備緥濡傦紝璁$畻鏈哄n2鍜?/span>n2+2n鐨勫搷搴旈熷害錛屽綋n姣旇緝澶х殑鏃跺欏嚑涔庝竴鏍鋒病浠涔堝尯鍒紝鎴戜滑渚垮彲鐩存帴璁や負鍚庤呯畻娉曠殑澶嶆潅搴︿負n2銆傚湪鍒嗘瀽綆楁硶鏃訛紝闅愯棌緇嗚妭鐨勬暟瀛﹁〃紺烘硶鎴愪負澶璁版硶錛屽畠鍙互甯姪鎴戜滑綆鍖栫畻娉曞鏉傚害鐨勮澶氱粏鑺傦紝鎻愬彇涓昏鎴愬垎錛岃繖鍜岄仴鎰熷浘鍍忓鐞嗕腑鐨勪富鎴愬垎鍒嗘瀽鎬濇兂鐩歌繎銆?/span>
鍩轟簬綆楁硶澶嶆潅搴︾畝鍖栬〃杈劇殑鎬濇兂鍩虹涓婏紝鎴戜滑閫氬父浼氬綆楁硶榪涜鏈鍧忔儏鍐靛垎鏋愬拰騫沖潎鎯呭喌鍒嗘瀽銆傚浜庝竴涓粰瀹氱殑綆楁硶錛屽鏋滆兘淇濊瘉瀹冪殑鏈鍧忔儏鍐典笅鐨勬ц兘渚濈劧涓嶉敊褰撶劧寰堝ソ錛屼絾鏄湪鏌愪簺鎯呭喌涓嬶紝紼嬪簭鐨勬渶鍧忔儏鍐電畻娉曠殑榪愯鏃墮棿鍜屽疄闄呮儏鍐電殑榪愯鏃墮棿鐩稿樊寰堝ぇ錛屽湪瀹為檯搴旂敤涓垜浠嚑涔庝笉浼氱鍒版渶鍧忔儏鍐典笅鐨勮緭鍏ワ紝閭d箞姝ゆ椂榪涜鏈鍧忔儏鍐靛垎鏋愭樉寰楁湁浜涚敾铔囨坊瓚籌紝鐗瑰埆鏄垎鏋愭渶鍧忔儏鍐電畻娉曚細鑺辮垂澶ч噺綺懼姏鐨勬椂鍊欍傜畻娉曠殑騫沖潎鎯呭喌鍒嗘瀽鍙互甯姪鎴戜滑浼拌紼嬪簭鐨勬ц兘錛屼綔涓虹畻娉曞垎鏋愮殑鍩烘湰鎸囨爣涔嬩竴錛屼絾鏄鉤鍧囨儏鍐靛拰瀹為檯鎯呭喌浠嶇劧浼氭湁鐩稿樊寰堝ぇ鐨勬椂鍊欙紝榪欐椂鎴戜滑渚垮彲浠ヤ嬌鐢ㄩ殢鏈烘硶鏉ュ敖閲忔ā鎷熺幇瀹炰腑鐨勬儏鍐碉紝榪欐牱鍙互寰楀埌鍦ㄤ弗鏍肩殑姒傜巼鎰忎箟涓婄殑棰勬祴榪愯鏃墮棿銆傚彟澶栵紝瀵逛簬涓涓粡鍏哥畻娉曪紝鎴戜滑娌℃湁蹇呰鍐嶅幓瀵硅綆楁硶榪涜鏀硅繘錛岀爺絀跺畠鐨勪笂鐣屽拰涓嬬晫錛屽彧闇瑕佷簡瑙h綆楁硶鐨勭壒鎬э紝鐒跺悗鍦ㄥ悎閫傜殑鏃跺欎嬌鐢ㄥ畠銆?/span>
鏈鍚庯紝褰撲竴涓▼搴忓彉蹇拰鍙樻參錛岃璁$畻鏈哄弽鏄犲嚭鏉ョ殑鏃墮棿宸嚑涔庝笉浼氳浜轟駭鐢熸劅瑙夌殑鏃跺欙紝鎴戜滑涔熸病鏈夊繀瑕佸幓鏀硅繘榪欎釜綆楁硶錛屼緥濡傜▼搴忚繘琛?/span>1000嬈″驚鐜姳璐?/span>0.001縐掞紝鏀硅繘鍚庝負0.1縐掞紝鍦ㄥ疄闄呭簲鐢ㄤ腑閫氬父涔熷彧闇瑕佸嚑鍗冩寰幆錛屾鏃舵垜浠氨娌℃湁蹇呰鍘昏姳鏃墮棿鏉ョ爺絀惰繖涓畻娉曚簡錛屽彧瑕佽綆楁硶鑳芥紜畬鎴愪換鍔″嵆鍙?/span>