【填大坑源码】【php预约系统源码】【php 挂号系统 源码】javastack源码

时间:2024-11-26 21:23:24 编辑:php网站源码搭建 来源:类似蚂蚁帮扶源码

1.javastackԴ??
2.java. util. Stack类的作用是什么
3.关于JAVA中的Stack.pop()
4.java 为什么不用JDK中的stack
5.1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法

javastack源码

javastackԴ??

       public interface MyStack<T> {

        /

**

         * 判断栈是否为空

         */

        boolean isEmpty();

        /

**

         * 清空栈

         */

        void clear();

        /

**

         * 栈的长度

         */

        int length();

        /

**

         * 数据入栈

         */

        boolean push(T data);

        /

**

         * 数据出栈

         */

        T pop();

       }

       public class MyArrayStack<T> implements MyStack<T> {

        private Object[] objs = new Object[];

        private int size = 0;

        @Override

        public boolean isEmpty() {

        return size == 0;

        }

        @Override

        public void clear() {

        // 将数组中的数据置为null, 方便GC进行回收

        for (int i = 0; i < size; i++) {

        objs[size] = null;

        }

        size = 0;

        }

        @Override

        public int length() {

        return size;

        }

        @Override

        public boolean push(T data) {

        // 判断是否需要进行数组扩容

        if (size >= objs.length) {

        resize();

        }

        objs[size++] = data;

        return true;

        }

        /

**

         * 数组扩容

         */

        private void resize() {

        Object[] temp = new Object[objs.length * 3 / 2 + 1];

        for (int i = 0; i < size; i++) {

        temp[i] = objs[i];

        objs[i] = null;

        }

        objs = temp;

        }

        @SuppressWarnings("unchecked")

        @Override

        public T pop() {

        if (size == 0) {

        return null;

        }

        return (T) objs[--size];

        }

        @Override

        public String toString() {

        StringBuilder sb = new StringBuilder();

        sb.append("MyArrayStack: [");

        for (int i = 0; i < size; i++) {

        sb.append(objs[i].toString());

        if (i != size - 1) {

        sb.append(", ");

        }

        }

        sb.append("]");

        return sb.toString();

        }

       }

       //栈的链表实现

       public class MyLinkedStack<T> implements MyStack<T> {

        /

**

         * 栈顶指针

         */

        private Node top;

        /

**

         * 栈的长度

         */

        private int size;

        public MyLinkedStack() {

        top = null;

        size = 0;

        }

        @Override

        public boolean isEmpty() {

        return size == 0;

        }

        @Override

        public void clear() {

        top = null;

        size = 0;

        }

        @Override

        public int length() {

        return size;

        }

        @Override

        public boolean push(T data) {

        Node node = new Node();

        node.data = data;

        node.pre = top;

        // 改变栈顶指针

        top = node;

        size++;

        return true;

        }

        @Override

        public T pop() {

        if (top != null) {

        Node node = top;

        // 改变栈顶指针

        top = top.pre;

        size--;

        return node.data;

        }

        return null;

        }

        /

**

         * 将数据封装成结点

         */

        private final class Node {

        private Node pre;

        private T data;

        }

       }

java. util. Stack类的作用是什么

       栈(Stack)是一种遵循后进先出(LIFO,Last In First Out)原则的线性表。它只能从一端(称为“栈顶”)进行插入和删除操作。填大坑源码栈的顺序取决于其元素的插入顺序。

       以下是php预约系统源码一个简单的Java代码示例,演示了如何使用Java的内置Stack类来创建一个栈,并执行出栈(pop)操作:

       在这个示例中,我们首先创建了一个Stack对象,并向其中添加了5个元素。然后我们使用while循环进行出栈操作,直到栈为空为止。每次出栈时,php 挂号系统 源码都会打印出被弹出(popped)的元素。由于栈是后进先出的数据结构,因此最早被添加到栈中的云购网 源码元素(在本例中是数字1)将首先被弹出。因此,这段代码的输出将是:

       ♡♡ 有帮助到的话,麻烦采纳哦!ocr文字识别 源码♡♡

关于JAVA中的Stack.pop()

       åœ¨JAVA中,把String当做了一个非常基本的数据类型,以至于任何类型都可以转化为String

       ä¸çŸ¥é“你听没听过这句话:万物皆对象

       åœ¨JAVA里所有的类都是继承自OBJECTç±»,而OBJECT类中有一个方法是toString()就是返回改OBJECT的字符表示,下面是JDK中的源码

       public String toString() {

        return getClass().getName() + "@" + Integer.toHexString(hashCode());

        }

       è¿˜æœ‰å°±æ˜¯åœ¨JAVA中如果遇到了将一个类软化为String时,这个类会自动调用toString()方法

       å¦‚

       class Test{

        String name;

        public String toString(){

        return "aaaa";

        }

       }

       public class Test1 {

        public static void main(String[] args) {

        System.out.println(new Test());

        }

       }

       è¿è¡Œå°†è¾“出"aaaa"

java 为什么不用JDK中的stack

       1、首先,用不用stack取决于场合。

       2、stack集成了Vector集合类,包含了同步方法,如果在需要同步机制的场合,当然可以用stack,如果不需要的话,还是不要用的好,效率高

1. 用C++或Java写一个关于堆栈的类描述,并为堆栈的压栈(push)和出栈(pop)操作编写方法

       #include<iostream.h>

       using namespace std;

       const int MAX=5; //假定栈中最多保存5个数据

       //定义名为stack的类,其具有栈功能

       class stack {

        //数据成员

        float num[MAX]; //存放栈数据的数组

        int top; //指示栈顶位置的变量

        public:

        //成员函数

        void init(void) { top=0; } //初始化函数

        void push(float x) //入栈函数

        {

        if (top==MAX){

        cout<<"Stack is full !"<<endl;

        return;

        };

        num[top]=x;

        top++;

        }

        float pop(void) //出栈函数

        {

        top--;

        if (top<0){

        cout<<"Stack is underflow !"<<endl;

        return 0;

        };

        return num[top];

        }

        }

        //以下是main()函数,其用stack类创建栈对象,并使用了这些对象

        main(void)

        {

        //声明变量和对象

        int i;

        float x;

        stack a,b; //声明(创建)栈对象

        //以下对栈对象初始化

        a.init();

        b.init();

        //以下利用循环和push()成员函数将2,4,6,8,依次入a栈对象

        for (i=1; i<=MAX; i++)

        a.push(2*i);

        //以下利用循环和pop()成员函数依次弹出a栈中的数据并显示

        for (i=1; i<=MAX; i++)

        cout<<a.pop()<<" ";

        cout<<endl;

        //以下利用循环和push()成员函数将键盘输入的数据依次入b栈

        cout<<"Please input five numbers."<<endl;

        for (i=1; i<=MAX; i++) {

        cin>>x;

        b.push(x);

        }

        //以下利用循环和pop()成员函数依次弹出b栈中的数据并显示

        for (i=1; i<=MAX; i++)

        cout<<b.pop()<<" ";

        }