`
Sharpleo
  • 浏览: 573786 次
  • 性别: Icon_minigender_1
  • 来自: newsk
社区版块
存档分类
最新评论

java数据结构 (栈和列队)

阅读更多
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

    在这个“数据结构表栈列队源码.rar”压缩包中,包含了四个关键的数据结构实现:顺序表、单链表、栈和队列。让我们逐一深入探讨这些数据结构及其源代码实现。 首先,我们来看**顺序表**。顺序表是一种简单的数据结构...

    数据结构c语言班 PPT 栈和列队第三章

    栈和队列是数据结构中的两种基本操作受限的线性表。在本章中,我们将深入理解它们的定义、特点以及在C语言中的实现。 首先,栈(Stack)是一种遵循“后进先出”(LIFO,Last In First Out)原则的数据结构。这意味...

    经典数据结构队列的研究和实现.pdf

    这不仅有助于理解计算机科学中的高级概念,例如算法和数据处理,也能在实际编程工作中提高开发效率和程序的性能。 总之,数据结构是处理数据的关键,而队列作为其中的基础,其原理和实现对于计算机科学领域的影响...

    循环列队,数据结构

    数据结构循环列队代码 #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++的数据结构(链表和队列)来解决舞会配对问题,体现了数据结构在实际问题中的应用,同时也展示了如何使用C++类来封装和操作这些数据结构。在实际编程中,这样的数据结构设计可以提高代码的...

    易语言列队处理数据

    在易语言中,"列队处理数据"是一个常见的编程概念,通常用于实现数据的异步处理或者批量处理,以提高程序的效率和响应速度。 列队(Queue)是数据结构中的一种,遵循先进先出(First In First Out, FIFO)的原则,...

    头歌 顺序表,链表,循环队列的基本操作和应用答案。

    在计算机科学中,数据结构是组织、管理和存储数据的方式,以便于高效地访问和修改。这里我们讨论的是顺序表、链表以及循环队列,这些都是基本的数据结构,广泛应用于算法设计和程序实现中。 顺序表是一种线性数据...

    易语言源码易语言列队处理数据源码.rar

    此外,对于学习者来说,通过实际动手修改和运行这段源码,可以加深对列队数据结构及其应用的理解,提高编程能力。如果遇到困难,可以结合易语言的官方文档和社区资源进行学习和讨论,进一步提升自己的编程技巧。 ...

    数据结构试题

    数据结构是计算机科学中至关重要的基础课程,主要研究如何高效地组织和管理数据。本题涉及的数据结构试题来自同济大学软件学院,涵盖了数组、链表、二叉树、堆、B树、哈希表、循环队列等多种数据结构及其操作。 1. ...

    自考数据结构导论试题2006-10

    数据结构是计算机科学中至关重要的基础学科...这些知识点是数据结构导论中的基础,理解和掌握它们对于学习后续的算法和数据结构至关重要。在实际应用中,理解数据结构的特性和操作可以帮助优化程序性能,解决复杂问题。

    数据结构模拟卷(含答案)经典习题培训讲学.docx

    数据结构是计算机科学中至关重要的基础概念,它主要研究如何高效地组织和管理数据,以便进行有效的计算和操作。在本模拟卷中,我们看到了一系列关于数据结构的经典习题,涵盖了多项选择题,涉及了数据结构的基本概念...

    易语言列队处理数据源码.rar

    在易语言中,“列队处理”是一个重要的概念,通常用于解决多线程环境下的任务调度和数据传输问题。 列队处理,又称为队列处理,是基于数据结构“队列”的一种编程方法。队列是一种先进先出(FIFO,First In First ...

    数据结构习题(khxy).pdf

    数据结构是计算机科学中至关重要的一个领域,它研究如何有效地组织和存储数据,以便于算法的执行和数据的检索。本文件中包含了一系列与数据结构相关的习题,涵盖了从基本概念到具体算法实现的多个方面。 1. 数据...

    数据结构课件 内部

    数据结构是计算机科学中的核心课程,它探讨了如何有效地组织和管理数据,以便于高效地进行数据处理。这里我们从给定的文件内容中提取出关键知识点: 1. **数据结构的定义**:数据结构是一个二元组 `Data_Structure=...

    数据结构与算法分析复习参照.pdf

    数据结构与算法分析是计算机科学中的核心课程,它主要涵盖了数据的组织方式和解决计算问题的方法。本复习参照主要针对《数据结构与算法分析》课程的期末考试,重点关注的章节为第一、二、三、六、七章。下面将详细...

    数据结构联考试卷7及答案1

    数据结构是计算机科学中的核心概念,它研究如何在计算机中组织和存储数据,以便高效地进行访问和修改。本试卷涉及的数据结构知识点广泛,涵盖了基本概念、数据结构类型、算法分析等多个方面。 1. 数据元素是数据的...

    数据结构期末考试试题(卷)和标准答案解析与评分标准.doc

    《数据结构》期末考试试题及答案解析主要涵盖了数据结构的基础概念、数据结构的类型、算法的时间复杂度、线性结构、链表操作、队列与栈的特性、循环队列的管理、数据结构在实际问题中的应用等多个方面。以下是详细的...

    2006年数据结构自考试卷

    16. 数据结构的层次:数据、数据元素和数据结构是数据的三个层次,数据结构是数据元素的组织形式。 17. 描述算法的方式:混合使用程序设计语言、伪代码和自然语言描述的算法称为混合描述算法。 18. 顺序表插入操作...

Global site tag (gtag.js) - Google Analytics