堆栈与队列
来源:互联网 发布:mac 下载ipython 编辑:程序博客网 时间:2024/05/17 22:03
堆栈与队列可以用数组实现,也可以用链表实现。下文统一用链表实现上述数据结构。
堆栈服从先进后出原则,只对栈头进行删除和插入操作,即封锁了链表的一端,只对链表的另一端进行操作,就形成了逻辑上的堆栈结构。
//节点
public class StackNode {
int content;//节点内容
StackNode Next;//指向下一节点
}
//堆栈实现
public class Stacklink {
StackNode keyNode=null;//栈顶指针
//判断栈是否为空
public boolean isEmpty(){
return (keyNode==null);
}
//入栈操作
public void push(int x)
{
StackNode tempNode =new StackNode();
tempNode.content=x;
tempNode.Next=keyNode;
keyNode=tempNode;
}
//出栈操作
public StackNode pop(){
if(keyNode==null){
System.out.println("当前栈为空");
return null;
}
else{
StackNode tempNode=keyNode;
keyNode=keyNode.Next;
return tempNode;
}
}
//查询栈顶元素,不从堆栈中移除
public int peak(){
return keyNode.content;
}
}
出栈时将头指针指向的节点暂时保存(用于返回),然后将头指针指向下一节点。返回原先保存的节点,则进行了出栈操作。
入栈是将新节点指向栈顶元素,然后将头指针指向新节点,则进行了入栈操作。
队列服从先进先出的原则,对链表的一端只进行删除(出队)操作,对另一端只进行入队操作。则形成了逻辑上的队列。
//节点
public class QueueNode {
int content;节点内容
QueueNode next;指向下一节点
}
//队列
public class QueueLink {
int count;//队列大小
QueueNode front,rear;//定义首指针和尾指针,分别用于出队和入队操作
//入队操作
public void insert(int content){
QueueNode temp=new QueueNode();
temp.content=content;
temp.next=null;
if(count==0){
front=rear=temp;
}
else{
rear.next=temp;
rear=temp;
}
count++;
}
//出队操作
public QueueNode remove(){
if(count==0)
{
System.out.println("当前队列为空");
return null;
}
else{
QueueNode temp =front;
front=front.next;
if(front==null){
rear=null;
}
count--;
return temp;
}
}
//判断是否为空
public boolean isEmpty(){
return count==0;
}
//返回队列大小
public int size(){
return count;
}
}
队列采用两个指针,头指针用于出队操作,尾指针用于入队操作。出队时保存头指针节点用于返回,将头指针指向下一节点。则完成了出队操作。
入队时将尾指针指向的节点指向新节点。再将尾指针指向新节点。则完成了入队操作。
- 堆栈与队列
- 堆栈与队列模拟
- 堆栈与队列
- java堆栈与队列
- python 堆栈与队列
- 堆栈与队列
- 堆栈与队列
- 队列与堆栈
- 堆栈与队列
- 堆栈与队列
- java队列与堆栈
- 链队列与堆栈操作
- java中的队列与堆栈
- 数据结构之堆栈与队列
- 堆栈与队列的区别
- C# 堆栈与队列的小测试
- STL通用容器之 队列与堆栈
- “数组、堆栈”与“链表、队列”的区别
- 【BZOJ2987】Earthquake
- JAVAWEB——Page 指令
- extjs中通过tpl实现带图标的ComboBox
- 白话Spring(基础篇)---bean的作用域
- SQL Server 2005 2008 清空删除日志文件 130G日志 10秒内变10M
- 堆栈与队列
- markedTextRange理解及使用 计算长度
- cc2640看门狗
- ActiveMQ 即时通讯服务 浅析
- ListView 局部刷新
- ubuntu编译android源码出现的问题记录
- JSONObject 和 JSONArray
- mac下安装javaHL not available的解决方法
- JPUSH后台极光推送