二重リンクリスト
パブリッククラスノード{
オブジェクト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型のサイズ。
公共ボイド追加(オブジェクト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型のトップ= -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;
}
オブジェクト[]データ。
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型フロント= 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。
}
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 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を返します。
}
}
IF(のisEmpty()){
するSystem.out.println( "树为空")。
}
戻りgetNodes(ルート)。
}
公共のint getNodes(ノード親){
IF(親= NULL!){
intは左= getNodes(parent.getLeftChild())。
int型の右= getNodes(parent.getRightChild());
リターンは+右+ 1を残しました。
}
0を返します。
}
}