Java実装コードのデータ構造

二重リンクリスト

パブリッククラスノード{
 
 オブジェクトo;
 ノードアップ;
 ノードダウン。
 パブリックオブジェクトGETO(){
  リターンO。
 }
 公共ボイド瀬戸(オブジェクトo){
  this.o = O。
 }
 パブリック・ノードgetUp(){
  アップを返します。
 }
 公共ボイドセットアップ(ノードまで){
  this.up =まで;
 }
 パブリック・ノードgetDown(){
  ダウン返します。
 }
 公共ボイドセットダウン(ノードダウン){
  this.down =ダウン。
 }
 
 
}
パブリッククラスSuperList {
 最初のノード。
 最後のノード;
 int型のサイズ。
 
 公共ボイド追加(オブジェクトo){
  ノードN =新しいノード()。
  n.setO(O)
  
  IF(第== NULL){
   第= N。
   最後のn =。
   n.setUp(NULL)。
   n.setDown(NULL)。
   
  }他{
   last.setDown(N)
   n.setUp(最後)。
   n.setDown(NULL)。
   最後のn =。
   
  }
  サイズ++。
  
 }
 
 パブリックブールチェック(INTインデックス){
  IF(インデックス<0 ||インデックス>サイズ){
   するSystem.out.println( "索引出问题")。
   falseを返します。
  }
  trueを返します。
 }
 
 公共INTのgetSize(){
  戻りサイズ;
  
 }
 
 パブリック・ノードgetNode(INTインデックス){
  ブールB =チェック(インデックス)。
  (B ==偽){もし
   戻りヌル。
  }
  ノードN =最初;
  以下のために(INT iが= 0; I <インデックス、I ++){
   N = n.getDown()。
   
  }
  
  N返します。
 }
 
 公共ボイド削除(INTインデックス){
  ノードN = getNode(インデックス)
  n.getUp()セットダウン(n.getDown())。
  n.getDown()セットアップ(n.getUp())。
  
  サイズ - ;
  
 }
 
 公共ボイド集合(整数インデックス、オブジェクトo){
  ノードN = getNode(インデックス)
  
  n.setO(O)
  
 }
 
 パブリックオブジェクトGET(INTインデックス){
  リターンgetNode(インデックス).getO();
  
 }
}
 
 
達成するためにスタック
クラススタック{パブリック
 
 ]データオブジェクト[;
 int型のトップ= -1; //最初のスタックポインタ
 INT最大;
 
 スタック(){
  
 }
 スタック(INT最大){
  this.max =最大、
  データオブジェクトの新しい新しい= [最大];
  
  
 }
 / /スタックが満杯であるか否かが判断される
 パブリックブールチェック(){
  IF(。トップ<-max 1){
   falseにリターンが;
  }
  trueに復帰;
 }
 
 ます。public voidプッシュ(オブジェクトO){
  IF(チェック()){
   System.out.printlnは( "スタックは、スタックを継続することができない、既に満杯である");
   リターン;
  }
  トップ+ = 1;
  DATA [トップ] = O;
  
  
 }
 
 パブリックオブジェクトPOP(){
  。IF(トップ== - 1){
   するSystem.out.println("スタック)スタック」ではなく、空であり、
   リターンはnull;
  }
  物体Ob = PEEK()。
  トップ= 1。
  OB返します。
 }
 
 パブリックオブジェクトPEEK(){
  リターンデータ[トップ]。
  
 }
 
 
}
 
キューが実装します
パブリッククラスキュー{
 オブジェクト[]データ。
 int型フロント= 0;
 int型後部= 0。
 int型の最大値。
 
 パブリックキュー(){
  
 }
 キュー(INT最大){
  this.max =マックス。
  データ=新しいオブジェクト[最大]。
 }
 
 パブリックブールのisEmpty(){
  (前後が==){場合に
   trueを返します。
  }他{
   falseを返します。
  }
  
 }
 
 公共int型のサイズ(){
  リアフロント返します。
  
 }
 
 パブリックブールisFull(){
  IF(サイズ()== MAX){
   trueを返します。
  }
  falseを返します。
 }
 
 パブリックオブジェクトchudui(){
  IF(のisEmpty()){
   System.err.println( "ペアが空である、デキューしない")、
   返りNULL;
  }
  オブジェクトO = DATA [フロント];
  
  フロント+ = 1;
  
  リターンO;
  
  
 }
 
 公共ボイドrudui(オブジェクトO ){
  IF(isFull()){
   するSystem.out.println( "まだ完全ではなく、エンキュー");
   リターン;
  }
  REAR + = 1;
  
  
  
 }
 
 
 
}
 
キューの実装サイクル
 
パブリッククラスxunhuanQueue {
 オブジェクト[]データ。
 int型フロント= 0;
 int型後部= 0。
 int型の最大値。
 
 公共xunhuanQueue(INT最大){
  this.max =マックス。
  データ=新しいオブジェクト[最大]。
  
 }
 
 パブリックブールのisEmpty(){
  場合(後部==フロントが){
   trueを返します。
  }
  
  falseを返します。
 }
 
 パブリックブールisFull(){
  IF((リア+ 1)%maxを==フロント){
   trueを返します。
  }
  
  falseを返します。
 }
 
 公共のintサイズ(){
  
  リアフロント返します。
 }
 
 公共ボイドrudui(オブジェクトo){
  IF(isFull()){
   System.out.println( "完全な力がエンキューすることはできません");
   リターン;
  }
  DATA [REAR] = O;
  REAR =(REAR + 1)%の最大値;
  
  
 }
 
 公共ボイドchudui(){
  IF(のisEmpty()){
   System.out.println( "空のチーム、チームはない");
   リターン;
  }
  DATA [フロント] = NULL;
  (フロント+ 1)フロント=%最大;
  
  
 }
 
}
 
バイナリソートツリーの実装
 
パブリッククラスノード{
 
 INT Oであり;
 ノードleftChild;
 ノードrightChild;
 公共INT GETO(){
  リターンO。
 }
 公共ボイド瀬戸(INT O){
  this.o = O。
 }
 パブリック・ノードgetLeftChild(){
  leftChildを返します。
 }
 公共ボイドsetLeftChild(ノードleftChild){
  this.leftChild = leftChild。
 }
 パブリック・ノードgetRightChild(){
  戻りrightChild。
 }
 公共ボイドsetRightChild(ノードrightChild){
  this.rightChild = rightChild。
 }
 
 
 
}
パブリッククラスBinaryTree {
 
 ノード根;
 
 公共ボイドインサート(INT O){
  ノードN =新しいノード()。
  n.setO(O)
  
  IF(ルート== NULL){
   n.setLeftChild(NULL)。
   n.setRightChild(NULL)。
   ルート= N。
   
  }
  
  インサート(根、N)。
  
 }
 
 公共ボイド挿入(ノードの親、ノードn){
  IF(parent.getO()== n.getO()){
   リターン。
  }
  
  IF(parent.getO()> n.getO()){
   IF(parent.getLeftChild()== NULL){
    parent.setLeftChild(N)
   }
   (parent.getLeftChild()、n)を挿入します。
   リターン;
  }
  
  IF(parent.getO()<n.getO()){
   IF(parent.getRightChild()== NULL){
    parent.setRightChild(N)
   }
   (parent.getRightChild()、n)を挿入します。
   リターン;
  }
 }
 
 のisEmpty(ブールパブリック){
  IF(ルート== NULL)が{
   trueを返します。
   
  }
  falseを返します。
 }
 
 公共ボイドXianSearch(){
  IF(のisEmpty()){
   するSystem.out.println( "树为空、无法遍历")。
   リターン;
  }
  XianSearch(ルート)。
  
 }
 
 パブリック無効XianSearch(ノードの親){
  {(親!= null)の場合
   System.out.println(parent.getO())。
   XianSearch(parent.getLeftChild())。
   XianSearch(parent.getRightChild())。
   
  }
  
 }
 公共ボイドzhongSearch(){
  (のisEmpty()){場合
   のSystem.out.println( "树为空无法宾利")。
   リターン;
  }
  zhongSearch(ルート)。
  
 }
 公共ボイドzhongSearch(ノード親){
  IF(親= NULL!){
   zhongSearch(parent.getLeftChild())。
   System.out.println(parent.getO())。
   zhongSearch(parent.getRightChild())。
  }
  
  
 }
 公共ボイドhouSearch(){
  IF(のisEmpty()){
   System.out.println( "树为空无法I案例")。
   リターン;
  }
  houSearch(ルート)。
  
 }
 公共ボイドhouSearch(ノード親){
  IF(親= NULL!){
   houSearch(parent.getLeftChild())。
   houSearch(parent.getRightChild())。
   System.out.println(parent.getO())。
   
  }
  
  
 }
 
 公共ボイドクリア(){
  ルート= NULL;
  
 }
 
 公共INTのgetHeight(){
  IF(のisEmpty()){
   戻り0;
  }
  
  のgetHeight(ルート)を返します。
  
  
 }
 
 公共int型のgetHeight(ノード親){
  IF(親!= NULL){
   
   INT = LのgetHeight(parent.getLeftChild())。
   
   INT R =のgetHeight(parent.getRightChild())。
   
   ?戻りL> R L + 1:R + 1;
   
  }
  
  0を返します。
  
 }
 公共INT getNodes(){
  IF(のisEmpty()){
   するSystem.out.println( "树为空")。
  }
  戻りgetNodes(ルート)。
  
  
 }
 
 公共のint getNodes(ノード親){
  IF(親= NULL!){
   
   intは左= getNodes(parent.getLeftChild())。
   int型の右= getNodes(parent.getRightChild());
   
   リターンは+右+ 1を残しました。
  }
  0を返します。
 }
}

おすすめ

転載: www.cnblogs.com/ttaall/p/12001229.html