public class MyStack {
//底层实现是一个数组
private long[] arr;
private int top;
/**
* 默认的构造方法
*/
public MyStack() {
arr = new long[10];
top = -1;
}
/**
* 带参数构造方法,参数为数组初始化大小
*/
public MyStack(int maxsize) {
arr = new long[maxsize];
top = -1;
}
/**
* 添加数据
*/
public void push(int value) {
arr[++top] = value;
}
/**
* 移除数据
*/
public long pop() {
return arr[top--];
}
/**
* 查看数据
*/
public long peek() {
return arr[top];
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return top == -1;
}
/**
* 判断是否满了
*/
public boolean isFull() {
return top == arr.length - 1;
}
}
测试
public class TestMyStack {
public static void main(String[] args) {
MyStack ms = new MyStack(4);
ms.push(23);
ms.push(12);
ms.push(1);
ms.push(90);
System.out.println(ms.isEmpty());
System.out.println(ms.isFull());
System.out.println(ms.peek());
System.out.println(ms.peek());
while(!ms.isEmpty()) {
System.out.print(ms.pop() + ",");
}
System.out.println(ms.isEmpty());
System.out.println(ms.isFull());
}
}
/*
* 列队类
*/
public class MyQueue {
//底层使用数组
private long[] arr;
//有效数据的大小
private int elements;
//队头
private int front;
//队尾
private int end;
/**
* 默认构造方法
*/
public MyQueue() {
arr = new long[10];
elements = 0;
front = 0;
end = -1;
}
/**
* 带参数的构造方法,参数为数组的大小
*/
public MyQueue(int maxsize) {
arr = new long[maxsize];
elements = 0;
front = 0;
end = -1;
}
/**
* 添加数据,从队尾插入
*/
public void insert(long value) {
arr[++end] = value;
elements++;
}
/**
* 删除数据,从队头删除
*/
public long remove() {
elements--;
return arr[front++];
}
/**
* 查看数据,从队头查看
*/
public long peek() {
return arr[front];
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return elements == 0;
}
/**
* 判断是否满了
*/
public boolean isFull() {
return elements == arr.length;
}
}
循环列队
/*
* 列队类
*/
public class MyCycleQueue {
//底层使用数组
private long[] arr;
//有效数据的大小
private int elements;
//队头
private int front;
//队尾
private int end;
/**
* 默认构造方法
*/
public MyCycleQueue() {
arr = new long[10];
elements = 0;
front = 0;
end = -1;
}
/**
* 带参数的构造方法,参数为数组的大小
*/
public MyCycleQueue(int maxsize) {
arr = new long[maxsize];
elements = 0;
front = 0;
end = -1;
}
/**
* 添加数据,从队尾插入
*/
public void insert(long value) {
if(end == arr.length - 1) {
end = -1;
}
arr[++end] = value;
elements++;
}
/**
* 删除数据,从队头删除
*/
public long remove() {
long value = arr[front++];
if(front == arr.length) {
front = 0;
}
elements--;
return value;
}
/**
* 查看数据,从队头查看
*/
public long peek() {
return arr[front];
}
/**
* 判断是否为空
*/
public boolean isEmpty() {
return elements == 0;
}
/**
* 判断是否满了
*/
public boolean isFull() {
return elements == arr.length;
}
}
public class TestMyQueue {
public static void main(String[] args) {
MyCycleQueue mq = new MyCycleQueue(4);
mq.insert(23);
mq.insert(45);
mq.insert(13);
mq.insert(1);
System.out.println(mq.isFull());
System.out.println(mq.isEmpty());
System.out.println(mq.peek());
System.out.println(mq.peek());
while (!mq.isEmpty()) {
System.out.print(mq.remove() + " ");
}
System.out.println();
mq.insert(23);
mq.insert(45);
mq.insert(13);
mq.insert(1);
while (!mq.isEmpty()) {
System.out.print(mq.remove() + " ");
}
}
}
分享到:
相关推荐
在这个“数据结构表栈列队源码.rar”压缩包中,包含了四个关键的数据结构实现:顺序表、单链表、栈和队列。让我们逐一深入探讨这些数据结构及其源代码实现。 首先,我们来看**顺序表**。顺序表是一种简单的数据结构...
栈和队列是数据结构中的两种基本操作受限的线性表。在本章中,我们将深入理解它们的定义、特点以及在C语言中的实现。 首先,栈(Stack)是一种遵循“后进先出”(LIFO,Last In First Out)原则的数据结构。这意味...
这不仅有助于理解计算机科学中的高级概念,例如算法和数据处理,也能在实际编程工作中提高开发效率和程序的性能。 总之,数据结构是处理数据的关键,而队列作为其中的基础,其原理和实现对于计算机科学领域的影响...
数据结构循环列队代码 #include #include #define M 50 typedef struct { int e[M]; int front; int rear; }SeqQueue;
在VC++6.0环境下编程,这是一款经典的集成开发环境,虽然现在已经较为老旧,但对于学习和理解C++语言的基本概念和数据结构实现仍然是个不错的选择。在VC++6.0中,你可以使用标准模板库(STL)中的队列容器(`std::...
总的来说,这个课题通过C++的数据结构(链表和队列)来解决舞会配对问题,体现了数据结构在实际问题中的应用,同时也展示了如何使用C++类来封装和操作这些数据结构。在实际编程中,这样的数据结构设计可以提高代码的...
在易语言中,"列队处理数据"是一个常见的编程概念,通常用于实现数据的异步处理或者批量处理,以提高程序的效率和响应速度。 列队(Queue)是数据结构中的一种,遵循先进先出(First In First Out, FIFO)的原则,...
在计算机科学中,数据结构是组织、管理和存储数据的方式,以便于高效地访问和修改。这里我们讨论的是顺序表、链表以及循环队列,这些都是基本的数据结构,广泛应用于算法设计和程序实现中。 顺序表是一种线性数据...
此外,对于学习者来说,通过实际动手修改和运行这段源码,可以加深对列队数据结构及其应用的理解,提高编程能力。如果遇到困难,可以结合易语言的官方文档和社区资源进行学习和讨论,进一步提升自己的编程技巧。 ...
数据结构是计算机科学中至关重要的基础课程,主要研究如何高效地组织和管理数据。本题涉及的数据结构试题来自同济大学软件学院,涵盖了数组、链表、二叉树、堆、B树、哈希表、循环队列等多种数据结构及其操作。 1. ...
数据结构是计算机科学中至关重要的基础学科...这些知识点是数据结构导论中的基础,理解和掌握它们对于学习后续的算法和数据结构至关重要。在实际应用中,理解数据结构的特性和操作可以帮助优化程序性能,解决复杂问题。
数据结构是计算机科学中至关重要的基础概念,它主要研究如何高效地组织和管理数据,以便进行有效的计算和操作。在本模拟卷中,我们看到了一系列关于数据结构的经典习题,涵盖了多项选择题,涉及了数据结构的基本概念...
在易语言中,“列队处理”是一个重要的概念,通常用于解决多线程环境下的任务调度和数据传输问题。 列队处理,又称为队列处理,是基于数据结构“队列”的一种编程方法。队列是一种先进先出(FIFO,First In First ...
数据结构是计算机科学中至关重要的一个领域,它研究如何有效地组织和存储数据,以便于算法的执行和数据的检索。本文件中包含了一系列与数据结构相关的习题,涵盖了从基本概念到具体算法实现的多个方面。 1. 数据...
数据结构是计算机科学中的核心课程,它探讨了如何有效地组织和管理数据,以便于高效地进行数据处理。这里我们从给定的文件内容中提取出关键知识点: 1. **数据结构的定义**:数据结构是一个二元组 `Data_Structure=...
数据结构与算法分析是计算机科学中的核心课程,它主要涵盖了数据的组织方式和解决计算问题的方法。本复习参照主要针对《数据结构与算法分析》课程的期末考试,重点关注的章节为第一、二、三、六、七章。下面将详细...
数据结构是计算机科学中的核心概念,它研究如何在计算机中组织和存储数据,以便高效地进行访问和修改。本试卷涉及的数据结构知识点广泛,涵盖了基本概念、数据结构类型、算法分析等多个方面。 1. 数据元素是数据的...
《数据结构》期末考试试题及答案解析主要涵盖了数据结构的基础概念、数据结构的类型、算法的时间复杂度、线性结构、链表操作、队列与栈的特性、循环队列的管理、数据结构在实际问题中的应用等多个方面。以下是详细的...
16. 数据结构的层次:数据、数据元素和数据结构是数据的三个层次,数据结构是数据元素的组织形式。 17. 描述算法的方式:混合使用程序设计语言、伪代码和自然语言描述的算法称为混合描述算法。 18. 顺序表插入操作...