javaデータ構造におけるスタックとキューの例の詳細
javaデータ構造におけるスタックとキューの例の詳細
スタックとキューは、両方の重要な線形データ構造であり、いずれも特定の範囲の記憶ユニットにおける記憶データである。線形表と比較して、それらの挿入および削除動作はより多くの制約と限定を受け、また限定的な線形テーブル構造と呼ばれる。スタックは先进的にFILOを出すので、列は先进的にFIFOを出すので、しかしあるデータの构造は一定の条件によってデータの列を并べて、この时の列は特殊な行列に属して、上の原则に必ずしも従いません。
実現スタック:配列とチェーン表の2つの方法を用いてスタックを実現する。
チェーンの方法:
チェーンの方法:
スタックとキューは、両方の重要な線形データ構造であり、いずれも特定の範囲の記憶ユニットにおける記憶データである。線形表と比較して、それらの挿入および削除動作はより多くの制約と限定を受け、また限定的な線形テーブル構造と呼ばれる。スタックは先进的にFILOを出すので、列は先进的にFIFOを出すので、しかしあるデータの构造は一定の条件によってデータの列を并べて、この时の列は特殊な行列に属して、上の原则に必ずしも従いません。
実現スタック:配列とチェーン表の2つの方法を用いてスタックを実現する。
チェーンの方法:
package com.cl.content01;
/*
*
*/
public class Stack<E> {
Node<E> top=null;
public boolean isEmpty(){
return top==null;
}
/*
*
*/
public void push(E data){
Node<E> nextNode=new Node<E>(data);
nextNode.next=top;
top=nextNode;
}
/*
*
*/
public E pop(){
if(this.isEmpty()){
return null;
}
E data =top.datas;
top=top.next;
return data;
}
}
/*
*
*/
class Node<E>{
Node<E> next=null;
E datas;
public Node(E datas){
this.datas=datas;
}
}
実現キュー:同じスタックチェーンの方法:
package com.cl.content01;
public class MyQueue<E> {
private Node<E> head=null;
private Node<E> tail=null;
public boolean isEmpty(){
return head==null;
}
public void put(E data){
Node<E> newNode=new Node<E>(data);
if(head==null&&tail==null)
head=tail=newNode;
else
tail.next=newNode;
tail=newNode;
}
public E pop(){
if(this.isEmpty())
return null;
E data=head.data;
head=head.next;
return data;
}
public int size(){
int n=0;
Node<E> t=head;
while(t!=null){
n++;
t=t.next;
}
return n;
}
public static void main(String[] args) {
MyQueue<Integer> q=new MyQueue<Integer>();
q.put(1);q.put(3);q.put(2);
System.out.println(q.pop());
System.out.println(q.size());
System.out.println(q.pop());
}
}
class Node<E>{
Node<E> next=null;
E data;
public Node(E data){
this.data=data;
}
}
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。本を読んでください。本能的にみなさんを助けたいです。ありがとうございます。