栈(Stack)、队列(Queue)与包(Bag)的实现
来源:互联网 发布:淘宝上情趣内衣买家秀 编辑:程序博客网 时间:2024/06/09 14:02
使用基本的链表结构实现栈,队列和包三种数据结构。首先用一个嵌套类来定义结点的抽象数据类型:
private class Node{ Item item; Node next;}
(1)堆栈Stack
import java.util.Iterator;public class Stack<Item> implements Iterable<Item>{ private Node first;//栈顶 private int N;//元素数量 private class Node{ Item item; Node next; } public void push(Item item){ Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; N++; } public Item pop(){ Item item = first.item; first = first.next; N--; return item; } //实现迭代 public Iterator<Item> iterator(){ return new ListIterator(); } private class ListIterator implements Iterator<Item>{ private Node current = first; public boolean hasNext(){ return current != null; } public void remove(){} public Item next(){ Item item = current.item; current = current.next;; return item; } }}
(2)队列(Queue)的实现
public class Queue<Item> implements Iterator<Item>{ private Node first; private Node last; private int N; private class Node{ Item item; Node next; }//队列向队尾填加元素 public void enqueue(Item item){ Node oldlast = last; last = new Node(); last.item = item; last.next = null; if(isEmpty) first = last; else oldlast.next = last; N++; return item; } public Item dequeue(){ Item item = first.item; first = first.next; if(isEmpty()) last = null; N--; return item; } }
(3)包(Bag)
public class Bag<Item>{ private Node first; private int N; private class Node{ Item item; Node next; } public void add(Item item){ Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfiirst; }}
顺序存储结构:数组
优点:通过索引可以任意访问元素
缺点:初始化时需要知道元素数量
链式存储结构:链表
优点:使用的空间大小和元素数量成正比
缺点:需要通过引用访问任意元素
1 0
- 栈(Stack)、队列(Queue)与包(Bag)的实现
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个队列(Queue)实现一个栈(Stack)
- 使用两个栈(stack)实现一个队列(queue)
- 栈(Stack)和队列(Queue)
- 栈(stack)和队列(queue)的简单实例
- C++ 队列(queue)堆栈(stack)实现基础
- 栈stack与队列queue
- 数据结构与程序设计c++-----栈(stack)与队列(queue)
- java实现数据结构——栈Stack与队列Queue
- 数据结构——两个栈(Stack)实现一个队列(Queue)
- 栈,队列 以及 stack, queue 的相互实现
- 栈,队列 以及 stack, queue 的相互实现 .
- 使用栈Stack实现队列Queue
- 利用栈Stack实现队列(Queue)
- python实现stack(栈)和队列(queue)
- 初识测试架构之单机架构
- mysql delete无法释放空间用分区代替
- hadoop2.x学习资料
- Maven 环境下使用 proguard-maven-plugin 插件混淆你的源码
- 把数组排成最小的数
- 栈(Stack)、队列(Queue)与包(Bag)的实现
- 贪心+数学——2016 (湖南省第十二届大学生计算机程序设计竞赛 A)
- LeetCode:384. Shuffle an Array、随机数生成(C++)
- tomcat源码:系统架构
- 单点登录SSO(cookie和ticket)实现
- poj 3270 Cow Sorting(置换)
- sql 的各个版本符号的意思
- 丑数
- 利用ehcache2.6实现数据缓存