`
yongsky
  • 浏览: 54816 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java数据结构和算法--栈与队列

阅读更多
(1)栈
package ChapterOne;

public class Stack {
	//栈数组
	long stackArr[];
	//栈的大小
	int maxSize;
	//栈的顶部
	int top;
	//初始化一个大小为size的栈
	public Stack(int size){
		maxSize = size; 
		stackArr = new long[size];
		top = -1;
	}
	//出栈操作
	public long pop(){
		return stackArr[top--];
	}
	//进栈操作
	public void push(long value){
		stackArr[++top] = value;
	}
	//判断栈是否为空
	public boolean isEmpty(){
		return top == -1;
	}
	//判断栈是否已满
	public boolean isFull(){
		return top == maxSize-1;
	}
	//取栈顶元素
	public long peek(){
		return stackArr[top];
	}
	public static void main(String[] args) {
		Stack stack = new Stack(10);
		while(!stack.isFull()){
			long v = (long) (Math.random()*100);
			stack.push(v);
			System.out.print(v+" ");
		}
		System.out.println();
		while(!stack.isEmpty()){
			long topValue = stack.pop();
			System.out.print(topValue+" ");
		}
		System.out.println();
	}
}

(2)队列
package ChapterOne;

public class Queue {
	//队列数组
	private long queueArr[];
	//队列的前端下标
	private int front;
	//队列的尾端下标
	private int rear;
	//队列的大小
	private int maxSize;
	//队列中元素的个数
	private int nItems;
	//初始化一个大小为size的队列
	public Queue(int size){
		queueArr = new long[size];
		maxSize = size;
		front = 0;
		rear = -1;
		nItems = 0;
	}
	//插入操作
	public void insert(long value){
		//队列已满
		if(rear == maxSize-1)
			rear = -1;
		queueArr[++rear] = value;
		nItems++;
	}
	//删除操作
	public long remove(){
		long temp = queueArr[front++];
		if(front == maxSize)
			front = 0;
		nItems--;
		return temp;
	}
	//返回队列第一个元素
	public long peakFront(){
		return queueArr[front];
	}
	//判断是否为空
	public boolean isEmpty(){
		return nItems == 0;
	}
	//判断是否已满
	public boolean isFull(){
		return nItems == maxSize;
	}
	//返回队列中元素的个数
	public int size(){
		return nItems;
	}
	
	public void print(){
		for(int i = front;i < front+nItems;i++){
			System.out.print(queueArr[i]+" ");
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		Queue q = new Queue(10);
		while(!q.isFull()){
			long value = (long)(Math.random()*100);
			q.insert(value);
		}
		q.print();
		while(!q.isEmpty()){
			q.remove();
			q.print();
		}
		q.print();
		System.out.println(q.isEmpty());
	}
}

(3)优先队列
package ChapterOne;

public class PriorityQueue {

	private int nItems;
	
	private long pqArr[];
	
	private int maxSize;
	
	public PriorityQueue(int size){
		maxSize = size;
		pqArr = new long[size];
		nItems = 0;
	}
	
	public void insert(long value){
		int i;
		if(nItems == 0)
			pqArr[nItems++] = value;
		else{
			for(i = nItems-1;i >= 0;i--){
				if(value < pqArr[i]){
					pqArr[i+1] = pqArr[i];
				}
				else
					break;
			}
			pqArr[i+1] = value;
			nItems++;
		}
	}
	
	public long remove(){
		return pqArr[--nItems];
	}
	
	public boolean isEmpty(){
		return nItems == 0;
	}
	
	public boolean isFull(){
		return nItems == maxSize;
	}
	
	public void print(){
		for(int i = 0;i < nItems;i++)
			System.out.print(pqArr[i]+" ");
		System.out.println();
	}
	
	public static void main(String[] args) {
		PriorityQueue pq = new PriorityQueue(10);
		while(!pq.isFull()){
			long value = (long)(Math.random()*100);
			pq.insert(value);
		}
		pq.print();
	}
}
分享到:
评论

相关推荐

    Java数据结构和算法-带书签目录扫描版

    《Java数据结构和算法-带书签目录扫描版》是一本深入探讨Java编程语言中数据结构和算法的书籍。此扫描版特别包含了完整的书签目录,使得读者在电子版阅读时能够快速定位到所需章节,提高了学习和查阅的效率。 在...

    Java数据结构和算法-第二版-高清扫描版-带目录书签

    《Java数据结构和算法》第二版是一本深入探讨Java编程中数据结构与算法的权威书籍。这本书涵盖了在软件开发中至关重要的基础知识,旨在帮助程序员提升解决问题的能力和代码效率。高清扫描版提供了清晰的文本和图表,...

    JAVA数据结构与算法-第二版

    总之,《JAVA数据结构与算法-第二版》是一本全面、深入的教程,适合Java程序员、计算机科学学生和对算法有兴趣的读者。通过阅读和实践书中的内容,读者不仅可以提高编程技能,还能培养解决复杂问题的能力,为未来在...

    java数据结构与算法.pdf

    Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点进行详细解释。 1. **数据结构**: - **稀疏数组**:当大量数据中大部分为零或...

    数据结构与算法-java

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。在Java编程中,理解这些概念可以帮助开发者编写出性能优异的程序。以下是基于标题“数据结构与算法-java”及描述中提到的“数据结构与算法...

    数据结构与算法--Java语言描述

    数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于Java语言。在这个“数据结构与算法--Java语言描述”的资料中,我们有望深入理解这些核心概念,并通过Java语言来...

    Java数据结构和算法中文第二版

    根据提供的信息,“Java数据结构和算法中文第二版”这本书主要关注的是数据结构与算法的相关内容。下面将基于这些信息,详细介绍数据结构与算法的核心概念、重要性和应用领域,以及在Java编程环境中如何实现这些概念...

    Java数据结构和算法.pdf

    资源摘要信息是关于Java数据结构和算法的知识点总结,涵盖了数组、栈与队列、链表、递归、哈希表、高级排序、二叉树、红黑树、堆、带权图等数据结构和算法概念。 一、数组 * 数组是相同类型变量的集合,可以使用...

    Java数据结构和算法-学习笔记

    本文基于《Java数据结构与算法》的学习笔记,旨在帮助读者更好地理解和掌握这些核心概念。 #### 二、数据结构概述 数据结构是指一组数据的集合以及它们之间的关系,以及在这组数据上定义的操作。常见的数据结构包括...

    C、C++、JAVA数据结构与算法电子书

    - **栈**:后进先出(LIFO)的数据结构,C、C++和Java都有内置的栈支持,如C++的std::stack,Java的java.util.Stack。 - **队列**:先进先出(FIFO)的数据结构,C++的std::queue,Java的java.util.Queue提供实现...

    Java数据结构和算法(第二版)+源代码+Applets

    Java数据结构和算法是计算机科学中的核心概念,对于任何Java开发者来说,理解和掌握它们都是至关重要的。本资源包“Java数据结构和算法(第二版)+源代码+Applets”为学习者提供了一个全面且深入的学习平台,涵盖了...

    数据结构与算法-Java语言版

    主要内容包括:面向对象编程的基本原理,判定算法效率的方法,堆栈、队列及其应用,对于多种递归的详细讨论,二叉树、B树、2-4树等的查找和遍历等,分析排序、散列等数据结构的应用,图、NP完整性,数据压缩算法、...

    hello-algo-数据结构与算法-zh-csharp.pdf

    本书的内容涵盖了数据结构与算法的基础知识,包括数组、链表、栈、队列、树、图等数据结构,以及排序、查找、图形遍历等算法。书中还提供了大量的编程实践和习题,帮助读者更好地掌握数据结构与算法的知识。 本书的...

    数据结构--表、栈、队列(java)

    本章节介绍了表、栈和队列三种重要的数据结构及其在Java中的实现方式。表作为一种灵活的线性数据结构,既可以基于数组也可以基于链表实现;栈和队列则是具有特定操作规则的特殊表。这些数据结构在算法设计和软件开发...

    java数据结构和算法学习笔记

    ### Java数据结构与算法学习笔记知识点总结 #### 一、数据结构概述 数据结构是对数据的一种组织形式,它决定了数据的存储方式以及处理数据的方法。常见的数据结构包括但不限于数组、链表、栈、队列、二叉树、图等...

    Java数据结构和算法(第二版)+随书源代码+applet小程序

    《Java数据结构和算法(第二版)》是一本专为希望深入理解Java编程中的数据结构与算法的读者设计的书籍。这本书的特点是从基础知识逐步引导读者进入复杂领域,通过结合实际的Applet小程序,使得理论知识变得生动直观。...

    数据结构试验2-栈和队列实验报告含源码

    在这个"数据结构试验2-栈和队列实验报告含源码"中,我们将深入探讨两个基本且至关重要的数据结构——栈和队列。 栈(Stack)是一种后进先出(LIFO,Last In First Out)的数据结构。想象一个堆叠的盘子,最后一个放...

    Java数据结构与算法-笔记-代码-课件-资料

    内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、...

Global site tag (gtag.js) - Google Analytics