java 数据结构中栈和队列的实例详解
发布于 2020-4-22|
复制链接
摘记: java 数据结构中栈和队列的实例详解栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入和删除操作收到更多的约束和限定,又被称为限定性的线性表结构。栈是先进后出FILO,队列是先进先出FIFO,但是有的数据结构按照一定的条件排队数据的队列,这时候的队列属 ..
java 数据结构中栈和队列的实例详解栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入和删除操作收到更多的约束和限定,又被称为限定性的线性表结构。栈是先进后出FILO,队列是先进先出FIFO,但是有的数据结构按照一定的条件排队数据的队列,这时候的队列属于特殊队列,不一定按照上面的原则。实现栈:采用数组和链表两种方法来实现栈
链表方法:
```java
package com.cl.content01;
/*
* 使用链表来实现栈
*/
public class Stack {
Node top=null;
public boolean isEmpty(){
return top==null;
}
/*
* 出栈
*/
public void push(E data){
Node nextNode=new Node(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{
Node next=null;
E datas;
public Node(E datas){
this.datas=datas;
}
}
```
实现队列:同栈一样
链表方法:
```java
package com.cl.content01;
public class MyQueue {
private Node head=null;
private Node tail=null;
public boolean isEmpty(){
return head==null;
}
public void put(E data){
Node newNode=new Node(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 t=head;
while(t!=null){
n++;
t=t.next;
}
return n;
}
public static void main(String[] args) {
MyQueue q=new MyQueue();
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{
Node next=null;
E data;
public Node(E data){
this.data=data;
}
}
```