这篇文章主要介绍了java 数据结构中栈和队列的实例详解的相关资料,主要使用数组与线性表的方法来实现,需要的朋友可以参考下
java 数据结构中栈和队列的实例详解
栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入和删除操作收到更多的约束和限定,又被称为限定性的线性表结构。栈是先进后出FILO,队列是先进先出FIFO,但是有的数据结构按照一定的条件排队数据的队列,这时候的队列属于特殊队列,不一定按照上面的原则。
实现栈:采用数组和链表两种方法来实现栈
链表方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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;
}
}
|
Salin selepas log masuk
实现队列:同栈一样
链表方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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;
}
}
|
Salin selepas log masuk
Atas ialah kandungan terperinci Java数据结构中栈与队列的分析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!