数据结构(1)-栈

数据结构—习题3.1 双栈-按栈号进行操作 1.问题描述 将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。双栈数据结构的定义如下: Typedef struct { int top[2],bot[2]; //栈顶和... 阅读详情


一、什么是栈

栈(stack),是一种常见的数据结构;大部分的微处理器运用了栈的基本体系结构,当调用一个方法时,把它的返回地址和参数压入栈,当方法结束返回时,那些数据就出栈。这里涉及到的栈的特性,即先进后出的特性。

相关词解读:

  • 压栈(push):压栈即进栈,对于栈来说,元素只能从栈顶进栈。
  • 弹栈(pop):弹栈即出栈,对于栈来说,元素只能从栈顶弹栈。
  • 先进后出:这是前面两者的总结,即对于栈来说,先入栈的元素会被压到栈尾,而每次弹栈的只能是栈顶的元素,所以就是先进后出。
    在这里插入图片描述

二、用Java实现栈结构

2.1、基于数组
public class Stack {
    private int size;//栈的大小
    private int pointer;//栈顶的索引
    private int[] theStack;//用数组构造栈结构

    public Stack(int size) {
        //初始化数组
        this.size = size;
        theStack = new int[size];
        //初始化索引,-1表示空栈
        pointer = -1;
    }

    //判断是否空栈
    public boolean isEmpty() {
        if (this.pointer == -1) {
            System.out.println("空栈");
            return true;
        } else {
            return false;
        }
    }

    //判断是否满栈
    public boolean isFull() {
        if (this.pointer == this.size - 1) {
            //满栈
            return true;
        } else {
            return false;
        }
    }

    //压栈
    public void push(int value) {
        if (!isFull()) {
            //不是满栈
            //索引+1并添加元素
            theStack[++pointer] = value;
        }

    }

    //弹栈
    public int pop() {
        if (!isEmpty()) {
            //不是空栈
            //弹出栈顶元素、索引-1
            return theStack[pointer--];
        }else{
            System.out.println("空栈");
            return 0;
        }

    }

    //查看栈顶元素
    public int peek(){
        return theStack[pointer];
    }

}
2.2、基于链表
public class LinkedListStack<T>{
    //栈深度
    private int stackDepth = 0;
    //栈头数据
    private Node first;



    //链表节点
    private class Node {
        //指向下一节点
        Node next;
        //节点携带的数据
        T value;
        private Node(T value) {
            this.value = value;
        }
    }

   
    public boolean isEmpty() {
        return stackDepth == 0;
    }


    public int depth() {
        return stackDepth;
    }

    
    public int push(T value) {
        Node node = new Node(value);
        //两种情况,一是为空栈时,二是不为空栈,从链头插入节点
        if (isEmpty()) {
            first = node;
            stackDepth++;
            return 1;
        } else {
            Node oldNode = first;
            first = node;
            first.next = oldNode;
            stackDepth++;
            return 1;
        }
    }
 
    public T pop() {
        if (!isEmpty()) {
            T value = first.value;
            first = first.next;
            stackDepth--;
            return value;
        } else {
            return null;
        }
    }


    public T peek() {
        if (isEmpty()) {
            return null;
        } else {
            return first.value;
        }
        
    }

}

三、栈结构相关操作的Big O分析

由于弹栈和压栈都只能在栈顶进行,不需要其他操作,所以对与栈结构来说,弹栈和压栈以及查看栈顶元素的时间复杂度都是常数,即O(1)。

四、Java的原始栈结构

讲完了栈结构的基本java实现,接下来看看java中的Stack< T >类;

package java.util.Stack< T >:


/**
 * The <code>Stack</code> class represents a last-in-first-out
 * (LIFO) stack of objects. It extends class <tt>Vector</tt> with five
 * operations that allow a vector to be treated as a stack. The usual
 * <tt>push</tt> and <tt>pop</tt> operations are provided, as well as a
 * method to <tt>peek</tt> at the top item on the stack, a method to test
 * for whether the stack is <tt>empty</tt>, and a method to <tt>search</tt>
 * the stack for an item and discover how far it is from the top.
 * <p>
 * When a stack is first created, it contains no items.
 *
 * <p>A more complete and consistent set of LIFO stack operations is
 * provided by the {@link Deque} interface and its implementations, which
 * should be used in preference to this class.  For example:
 * <pre>   {@code
 *   Deque<Integer> stack = new ArrayDeque<Integer>();}</pre>
 *
 * @author  Jonathan Payne
 * @since   JDK1.0
 */
public
class Stack<E> extends Vector<E> {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }

    /**
     * Pushes an item onto the top of this stack. This has exactly
     * the same effect as:
     * <blockquote><pre>
     * addElement(item)</pre></blockquote>
     *
     * @param   item   the item to be pushed onto this stack.
     * @return  the <code>item</code> argument.
     * @see     java.util.Vector#addElement
     */
    public E push(E item) {
        addElement(item);

        return item;
    }

    /**
     * Removes the object at the top of this stack and returns that
     * object as the value of this function.
     *
     * @return  The object at the top of this stack (the last item
     *          of the <tt>Vector</tt> object).
     * @throws  EmptyStackException  if this stack is empty.
     */
    public synchronized E pop() {
        E       obj;
        int     len = size();

        obj = peek();
        removeElementAt(len - 1);

        return obj;
    }

    /**
     * Looks at the object at the top of this stack without removing it
     * from the stack.
     *
     * @return  the object at the top of this stack (the last item
     *          of the <tt>Vector</tt> object).
     * @throws  EmptyStackException  if this stack is empty.
     */
    public synchronized E peek() {
        int     len = size();

        if (len == 0)
            throw new EmptyStackException();
        return elementAt(len - 1);
    }

    /**
     * Tests if this stack is empty.
     *
     * @return  <code>true</code> if and only if this stack contains
     *          no items; <code>false</code> otherwise.
     */
    public boolean empty() {
        return size() == 0;
    }

    /**
     * Returns the 1-based position where an object is on this stack.
     * If the object <tt>o</tt> occurs as an item in this stack, this
     * method returns the distance from the top of the stack of the
     * occurrence nearest the top of the stack; the topmost item on the
     * stack is considered to be at distance <tt>1</tt>. The <tt>equals</tt>
     * method is used to compare <tt>o</tt> to the
     * items in this stack.
     *
     * @param   o   the desired object.
     * @return  the 1-based position from the top of the stack where
     *          the object is located; the return value <code>-1</code>
     *          indicates that the object is not on the stack.
     */
    public synchronized int search(Object o) {
        int i = lastIndexOf(o);

        if (i >= 0) {
            return size() - i;
        }
        return -1;
    }

    /** use serialVersionUID from JDK 1.0.2 for interoperability */
    private static final long serialVersionUID = 1224463164541339165L;
}

这个Stack< T >类和上文用java实现的基本栈结构原理一样,不过是将数组用泛型替换掉,得一让Stack< T >类能够存储不同的对象和数据类型,其中的弹栈pop()、压栈push()、查看栈头peek()方法的实现都是一样的;还有一点值得一提的是,该类继承了向量类Vector,Vector类是数组的扩展,它是可扩容的,这解决的数组的定长问题。

【数据结构】实现栈-输出最大值,最小值,时间复杂度O(1) @TOC 问题 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的getMin和最大元素的getMax函数。在该栈中,调用getMin、getMax、push及pop的时间复杂度都是O(1).。 解题思路 用辅助栈记住每次入栈的当前最小值/最大值:在入栈时,往辅助栈中加入当前最小值/最大值;出栈时,辅组栈也出栈一个元素。最小值/最大值从辅助栈中获取栈顶元素。 基础代码实现 import java.util.ArrayList; import java.util.EmptyStackExceptio 阅读详情

相关推荐

educoder数据结构与算法 栈 第1关:实现一个顺序存储的栈

任务描述 本关任务是实现 step1/SeqStack.cpp 中的SS_IsFull、SS_IsEmpty、SS_Length、SS_Push和SS_Pop五个操作函数,以实现判断栈是否为满、是否为空、求栈元素个数、进栈和出栈等功能。 相关知识 栈的基本概念 栈是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算,这一端被称为栈顶。栈既可以采用顺序存储,也可以采用链接存储来实现。下面给出了一种基于顺序存储的栈的实现方案: 如图 1 所示:该栈存储了 4 个元素 {56,77,1

qq_54008392的博客 1万+

定义栈的数据结构,求栈中最小的元素,复杂度要求为O(1)

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路如下: 1.,定义一个辅助栈,当你添加元素的时候,首先判断当前辅助栈是否为空,如果为空,那么这第一个进栈的元素当做最小的元素入辅助栈,并且把这个元素同时入主栈。 2.当元素要出栈的时候,首先判断主栈要出栈的元素是不是和辅助栈的栈顶元素相同,如果是,则代表当前出栈的元素是最小的元素,那么就需要将辅助栈的元素也出栈,让辅助栈的下一个栈顶元素成为最小的元素,栈元素出栈。 3.求最小的元素,只需要将辅助栈的栈

qq_41486775的博客 246

Python数据结构与算法(3.1)——栈

栈和队列是在程序设计中常见的数据类型,从数据结构的角度来讲,栈和队列也是线性表,是操作受限的线性表,它们的基本操作是线性表操作的子集,但从数据类型的角度来讲,它们与线性表又有着巨大的不同。本节将首先介绍栈的定义和其不同实现,并且给出栈的一些实际应用。

盼小辉丶的博客 4万+

定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)

//定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值//只需要实现Push,Pop,GetMin,要求它们的时间复杂度全部为O(1)

尹成的技术博客 1891

CMOS反相器版图设计全解析:PMOS/NMOS布局与VDD/VSS连接门道

版图设计是芯片从电路原理图迈向物理实现的必经桥梁,而CMOS反相器作为最基础的数字单元,恰好是理解这一过程的最佳切入点。在版图绘制中,PMOS与NMOS因导电类型和迁移率差异,需要在N阱与P衬底上分别规划,并呈现出不同的有源区尺寸。真正决定版图好坏的关键,往往在于VDD/VSS的完整连接——不仅要接通源漏,还要通过阱接触和衬底接触固定阱与衬底电位,防止寄生PN结正偏和闩锁效应。合理布局电源地线轨道、优化接触孔数量,能显著降低寄生电阻与电迁移风险。这些原理不仅适用于反相器,也是所有CMOS数字标准单元版图设计

weixin_29159441的博客 305

六维力传感器选型指南:电阻式vs电容式,哪个更适合你的工业场景?

本文深入解析六维力传感器在工业自动化中的选型要点,重点对比电阻式与电容式传感器的核心原理、环境适应性及成本结构。针对不同工业场景(如高精度装配、重载机器人等),提供专业选型建议,帮助工程师优化系统性能与经济效益。

weixin_42525005的博客 397

数据结构栈实验报告1

数据结构栈实验报告1 去发现同类优质开源项目:https://gitcode.com/ 资源描述 本资源文件为《数据结构栈实验报告1》,内容涵盖了栈的基本操作及应用。具体包括以下几个部分: 栈的存储结构及相关操作: 实现栈的基本存储结构。 实现栈的相关操作,包括进栈、出栈、取栈顶元素等。 字符串的逆序输出: 使用栈完成一个字符串的逆序输出。 表达式的括号匹配: 使用栈判断一个...

gitblog_06692的博客 1416

从零搭建一个AF架构项目:基于TIA Portal V19和S7-PLCSIM的仿真调试全流程

本文详细介绍了如何在TIA Portal V19环境中从零搭建西门子Automation Framework(AF架构)项目,包括环境准备、硬件组态、核心组件创建、项目架构分层实现以及仿真调试全流程。通过模块化编程和标准化接口设计,AF架构显著提升工业自动化项目的开发效率和维护便利性,特别适合S7-1500系列PLC的应用开发。

weixin_29313547的博客 676

栈的出入js实现_1.1基础数据结构-栈

栈栈数据结构用于满足数据后进先出的功能,新元素存放与取出只能在栈顶:下面主要介绍两种栈结构的实现方式:链表栈数组栈链表实现1.入栈:添加新元素(push)在链表头部新添加元素,可以拆解为3步保存已有链表头节点引用创建新的待插入节点,将新的头结点指针指向它将新插入节点的下一个节点指针指向现有链表头节点示意图如下:2.出栈:删除头节点(pop)保存头结点值,以便返回将头结点引用指向头结点的下一个节点返...

weixin_39553600的博客 159

win11禁止更新,草履虫教程

本文介绍了彻底禁止Windows 11系统更新的组合方法,包括禁用核心服务、修改注册表、关闭计划任务和使用组策略(专业版适用)。作者特别提醒,禁止更新会影响系统安全性,建议实体机保持更新,仅虚拟机等特殊情况下使用这些方法。同时强调即使禁用更新,也应定期手动检查重要安全补丁。文章最后附上了作者的个人网站信息。

testwzc1的博客 562

Android TV远程调试全攻略:从开发者模式开启到ADB连接(附常见问题排查)

本文提供了一份详尽的Android TV远程调试实战指南,涵盖从开启开发者模式、配置网络ADB连接到高效调试与深度排错的完整流程。文章重点解析了通过Wi-Fi进行远程调试的核心步骤,并针对常见的连接失败、授权问题等提供了系统性的解决方案,旨在帮助开发者为Android TV应用开发构建稳定高效的调试环境。

1347

数据结构1—栈与队列

栈与队列都属于动态集合,这两种数据结构的不同之处在于取出数据的次序不同。

HkSwaggyD的博客 254

基于FPGA的DDR学习——1.基础知识

⚪DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)开发的第三代SDRAM内存技术标准,1.8V工作电压,240线接口,提供了相较于DDR SDRAM更高的运行效能与更低的电压,同样采用在时钟的上升/下降沿同时进行数据传输的基本方式,但拥有两倍于上一代DDR内存预读取能力(即4bit数据预取能力),其常见的频率规范有DDR2 400\533\667\800\1066\1333等,总线频率553MHZ的DDR2内存只需133MHZ的工作频率。

qq_44932488的博客 2072

栈的数据结构1

栈的数据结构 栈是一种遵从后进先出原则的有序集合 新添加和要删除的元素都会在栈顶 新元素都会在栈顶,旧元素都会在栈底 创建基于数组的栈 栈中的方法 描述 push(element) 向栈顶添加一个元素 pop() 删除栈顶的元素 peek() 返回栈顶的元素 isEmpty() 判断栈里有没有元素,有就返回true,否则返回false clear() 删除栈里所...

qq_41672008的博客 278

TESSY创建单元测试或集成测试工程

我们以tessy5.1为例,给大家展示单元测试和集成测试工程的创建过程。

空气中的告白专栏 1686

R语言中的Gamma分布函数

在R语言中,我们可以使用最大似然估计(Maximum Likelihood Estimation,MLE)或最小二乘估计(Least Squares Estimation,LSE)等方法来估计Gamma分布的参数。本文介绍了在R语言中使用Gamma分布函数的基本操作,包括生成随机变量、计算概率密度函数和累积分布函数,以及参数估计和拟合。函数来生成Gamma分布的随机变量,计算概率密度函数(PDF)和累积分布函数(CDF),以及进行参数估计和拟合。要计算Gamma分布的累积分布函数(CDF),我们可以使用。

ByteWhiz的博客 1633

直接利用头文件创建一个栈_1.1基础数据结构-栈

栈栈数据结构用于满足数据后进先出的功能,新元素存放与取出只能在栈顶:下面主要介绍两种栈结构的实现方式:链表栈数组栈链表实现1.入栈:添加新元素(push)在链表头部新添加元素,可以拆解为3步保存已有链表头节点引用创建新的待插入节点,将新的头结点指针指向它将新插入节点的下一个节点指针指向现有链表头节点示意图如下:2.出栈:删除头节点(pop)保存头结点值,以便返回将头结点引用指向头结点的下一个节点返...

weixin_35523284的博客 274

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据结构之栈1

数据结构之栈1利用数组模拟栈 利用数组模拟栈 本次利用数组模拟栈 package demo.sjjg.stack; public class ArrayStackDemo { public static void main(String[] args) { ArrayStack arrayStack = new ArrayStack(5); arrayStack.push(1); arrayStack.push(2); arraySt

lsl181121的博客 148

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

【数据结构1.0】栈

int top;}Stack;方便后续代码的维护,我们先不妨将int重命名成STDataType。由于实现动态生长的栈我们需要一个STDataType*类型指针a维护以后动态申请的空间(用来存放需存储的数据元素的)。用top指向栈顶元素的下一个元素(可以理解成元素个数)。用capacity记录以后动态图申请空间的大小。将a、top和capacity用结构体包起来并重命名成Stack。

X__cheng的博客 1115

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构1————栈

数据结构 栈的基本认识

m0_62750704的博客 442

1.栈:后进先出的线性数据结构

本文介绍了栈(Stack)这种后进先出(LIFO)的线性数据结构。栈通过连续内存(通常用数组实现)和栈顶指针(初始为-1)构成,核心操作包括入栈(Push)和出栈(Pop),时间复杂度均为O(1)。文章详细说明了栈的初始化、判空判满条件,并提供了C语言实现代码。同时指出栈溢出的风险及预防措施,最后列举了栈在函数调用、表达式求值等场景的应用。全文系统性地讲解了栈的基本原理和实现方法。

u011697185的专栏 234

18 包含min函数的栈: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小数的min 函数。在该栈中,调用min、push 及pop的时间复杂度都是O(1)。

转载链接 :https://www.cnblogs.com/xwwbb/p/10690945.html 一、题目描述   定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 二、思路解析   首先定义一个Integer类型的栈,记为stack,此栈用来完成数据正常的push()、pop()、top()和peek()等操作。   然后定义一个In...

皮卡丘的博客 186

数据结构之栈学习(1)

(1)什么是栈      栈是一种实现“先进后出”的存储结构。      (2)栈的表示      栈有两种存储表示方法。顺序栈和链式栈 (3)栈的基本操作     初始化栈,即构造一个空栈。

喜欢哲学的女孩 1272

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。时间复杂度都是O(1)

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求:使得时间复杂度都是O(1) 完成如下的函数: import java.util.Stack; public class Solution { public void push(int node) { } public void pop() ...

没有伞的孩子必须努力奔跑!—小林 279

数据结构2-1栈

数据结构2-1(栈 stack)栈的概念栈的基本模型栈的功能函数empty()函数代码size()函数代码push()函数代码pop()函数代码top()函数代码STL 栈 本文是介绍关于栈的基础知识,以及其STL 栈的使用。 栈的概念 栈是一种基本的数据结构,满足先进后出的基本原则(FILO),该数据结构可以看作向井中放物品与取物品。 如下图: 栈的基本模型 栈的模型可以通过多种途径实现。较为常见的是数组模拟栈,也可以以链表模拟栈。 数组模拟栈: 栈的结构需要存储空间与栈顶的位置。 int stack[M

CSNO.i的博客 266

数据结构与算法笔记---栈---最小栈[1]

0.简介 本文章将介绍最小栈原理和实现。 1.最小栈 栈本身有push,pop操作,现在需要添加一个min操作,min操作就是求得栈中最小元素,要求时间复杂度是O(1)。 2.分析 其实求栈中最小值本身不是难题,这里难点在于时间复杂度是O(1),当找min值的时候,要求立刻就找到,这个就要追寻栈的一些本质算法。从数括号深度来看吧。 说有这么一段代码。 int fun() {//作用...

ARTELE的博客 315
上一篇: 算法学习笔记(3)-二分查找
下一篇: 数据结构(2)-队列
BoringRong
BoringRong 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 2万+粉丝 386原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值