>  기사  >  Java  >  Java 데이터 구조의 스택과 큐에 대한 자세한 설명

Java 데이터 구조의 스택과 큐에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-27 15:14:031545검색

이 글에서는 주로 Java 데이터 구조 스택 및 큐 관련 정보를 소개합니다. 다음은 Java의 스택 및 큐 구현 예를 통해 모든 사람이 데이터 구조를 이해하고 학습할 수 있도록 도와줍니다.

java 데이터 구조 스택 및 대기열 : 정렬

queue는 최초의 최초의 데이터 구조

구조화 코드입니다. 선입후출 데이터 구조


1: 배열을 사용하여 스택 시뮬레이션


package Queue; 
/* 
 * 使用java构建队列,并模拟实现队列的入队和出对方法 
 */ 
public class Queue {   //队列类 
 
  private int maxSize; //定义队列的长度 
  private int[] arrQueue;   //队列 
  private int rear;   //定义队列的尾指针 
  private int front;  //定义队列的头指针 
  private int empty; //元素的个数 
   
  public Queue(int s)  //初始化构造函数 
  { 
    maxSize = s; 
    arrQueue = new int[s]; 
    rear = -1; 
    front=0; 
    empty = 0; 
  } 
   
  //实现插入方法 
  public void insert(int m) 
  { 
    if(rear == maxSize-1)  //处理循环 
      rear = -1;    
    arrQueue[++rear] = m;  //对尾指针加一,把值放在队列结尾 
    empty++;   //队列元素个数加1 
    System.out.println("队列入队元素 为:" + m); 
  } 
   
  //实现出栈的方法,即取得队列的头元素 
  public int remove() 
  { 
    int temp = arrQueue[front++]; //将栈顶元素赋值给temp,栈顶指针加1 
    if(front == maxSize) //处理循环 
      front = 0; 
    empty--; //元素个数-1 
    return temp; 
  } 
   
  //判断队列是否为空 
  public boolean isEmpty() 
  { 
    return (empty==0); 
  } 
   
  //判断对列是否为满 
  public boolean isFull() 
  { 
    return (empty == maxSize); 
  } 
   
  //返回队列长度 
  public int qLong() 
  { 
    return empty; 
  } 
   
  public static void main(String[] args) { 
    Queue q = new Queue(5); //初始化队列为5个元素 
     
    q.insert(1); 
    q.insert(2); 
    q.insert(3); 
    q.insert(4); 
    q.insert(5); 
     
    int t1 = q.remove(); 
    System.out.println("队列元素出队:" + t1); 
    int t2 = q.remove(); 
    System.out.println("队列元素出队:" + t2); 
     
    System.out.println("队列是否为空:" + q.isEmpty()); 
    System.out.println("队列是否为满:" + q.isFull()); 
    System.out.println("队列的长度:" + q.qLong()); 
  } 
   
}
2: 연결된 목록을 사용하여 스택 시뮬레이션


package Statck; 
/* 
 * 使用java构建栈,并模拟实现栈的入栈和出栈方法 
 * 使用数组实现 
 */ 
 
public class Statck1 { 
 
  private int maxSize;   //栈的最多元素数 
  private int top;  //栈顶指针 
  private int len;   //栈的深度 
  private int[] arrStack; // 模拟栈 
   
  //栈的初始化 
  public Statck1(int s){ 
    maxSize = s; 
    len =0; 
    top= -1; 
    arrStack = new int[s]; 
  } 
   
  //获取栈的长度 
  public int getLen(){ 
    return len; 
  } 
   
  //获取当前栈还能插入多少个f元素 
  public int getLeaveLen(){ 
    return (maxSize-len); 
  } 
  //判断栈是否满 
  public boolean isFull(){ 
    return (len==maxSize); 
  } 
   
  //判断栈是否为空 
  public boolean isEmpty(){ 
    return (len ==0); 
  } 
   
  //元素入栈 
  public void inStack(int s) 
  { 
    arrStack[++top] = s; //栈顶指针加1,入栈 
    System.out.println("元素入栈:" + s); 
    len ++ ;//栈深度+1 
  } 
   
  //元素出栈 
  public int outStack() 
  { 
    int temp = arrStack[top--];//赋值之后减1 
    System.out.println("元素出栈:" + temp); 
    len--;  //栈深度-1 
    return temp; 
  } 
   
  public static void main(String[] args) { 
    Statck1 s = new Statck1(5); 
     
    s.inStack(1); 
    s.inStack(2); 
    s.inStack(3); 
    s.inStack(4); 
    s.inStack(5); 
     
    s.outStack(); 
    s.outStack(); 
    System.out.println("栈的长度:" + s.getLen()); 
    System.out.println("还能入栈元素个数:" + s.getLeaveLen()); 
    System.out.println("栈的是否为空:" + s.isEmpty()); 
    System.out.println("栈的是否为满:" + s.isFull()); 
  } 
}

위 내용은 Java 데이터 구조의 스택과 큐에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.