精华内容
下载资源
问答
  • 共享栈判断栈满的条件,即判断两个栈顶的位置的状态,其根本是由两个栈顶指针的操作方式决定的。 用入栈操作来说有以下两种操作方式:(1)栈顶指针先加1,再赋值,那么栈顶指针所指的地方是最后入栈的元素(2)若先...

    共享栈判断栈满的条件,即判断两个栈顶的位置的状态,其根本是由两个栈顶指针的操作方式决定的。
    用入栈操作来说有以下两种操作方式:(1)栈顶指针先加1,再赋值,那么栈顶指针所指的地方是最后入栈的元素(2)若先赋值,栈顶指针再加1,则指针指向的位置是在最后入栈元素的后面1位,指向的地方为空值

    由此导致下面可能发生的四种情况:
    (1)初始值:top0=-1,top1=maxsize ,栈顶指针先加1(top1为减一),再赋值
    图一
    (2)初始值:top0=-1,top1=maxsize-1,top0先加1再赋值,top1先赋值,再减1
    图二
    (3)初始值:top0=0,top1=maxsize,top0先赋值再加1,top1先减1再赋值
    图三
    (4)初始值:top0=0,top1=maxsize-1,栈顶指针先赋值再加1(top1为减一)
    图四

    展开全文
  • 主讲人章万静 否 是 开始 结束 top==MAX-1 栈顶元素下标top 顺序栈最大空间MAX 定义变量 栈已满 栈没满 顺序栈判断栈满 顺序栈判断栈满 顺序栈判断栈满很重要在进栈操作之前必须要进行判断 顺序栈判断栈满的条件top=...
  • 数据结构——共享栈算法的栈满问题

    千次阅读 多人点赞 2018-07-15 03:13:21
    一、共享栈的优点 ...判断栈满的条件,就是判断两个栈顶的位置的状态,其根本原因是由两个栈顶指针的操作方式决定的。 用入栈操作来说:①栈顶指针先加1,再赋值,那么栈顶指针所指的地方,则最...

    一、共享栈的优点

    共享栈是为了有效的利用存储空间,两个栈的空间可以相互调节

    二、共享栈的概念

    因为栈底位置不变,所以让两个顺序栈共享一个数组空间,两个栈的栈底分别设置在两端,两个栈顶向数组中间延伸。

     

    三、共享栈栈满问题

    判断栈满的条件,就是判断两个栈顶的位置的状态,其根本原因是由两个栈顶指针的操作方式决定的

    用入栈操作来说:①栈顶指针先加1,再赋值,那么栈顶指针所指的地方,则最后入栈的元素

                               ②若先赋值,栈顶指针再加1,则指针指向的位置则在最后入栈元素的后面1位,指向的地方也为空值。

     

    下面为会发生的四种情况:

    ①初始值:top0=-1,top1=10 ,栈底指针都是先加1,再赋值

     

    ②初始值:top0=-1,top1=9 ,top0:先加1,再赋值,           top1:先赋值,再加1

     

    ③初始值:top0=0,top1=10 ,top0:先赋值,再加1              top1:先加1,再赋值

     

     

    ④初始值:top0=0,top1=9 ,栈顶指针都是:先赋值,再加1

     

    此时还有两个剩余空间

     

     

    展开全文
  • 栈满:top==maxsize-1 链栈 栈空:s->next==NULL 栈满:不存在 环形队列 队空:p->front==p->rear 队满:(p->rear+1)%maxsize==p->front 链队 队空:q->rear==NULL 队满:不存在

    顺序栈

    栈空:top==-1

    栈满:top==maxsize-1

    链栈

    栈空:s->next==NULL

    栈满:不存在

    环形队列

    队空:p->front==p->rear

    队满:(p->rear+1)%maxsize==p->front

    链队

    队空:q->rear==NULL

    队满:不存在

    展开全文
  • 数据结构之共享

    2017-10-30 12:42:56
    数据结构之共享栈 两个栈的栈底为一维数组的两端。 栈0的栈底为-1 ... 判断栈满的条件为: 两个栈的栈顶相差1#include #include #define maxsize 20 #define ElemType int typedef struct { int st

    数据结构之共享栈
    两个栈的栈底为一维数组的两端。
    栈0的栈底为-1
    栈1的栈底为n
    判断栈满的条件为:
    两个栈的栈顶相差1

    #include<stdio.h>
    #include<stdbool.h>
    #define maxsize 20
    #define ElemType int
    typedef struct
    {
        int stack[maxsize];
        int top[2];
    }stk;
    stk s;
    //------------------------入栈---------------------------
    int push(int i,int x)     //   i代表共享栈的栈号,x表示入栈元素
    {
        if(i<0||i>1)
        {
            printf("栈号输入错误!\n");
            return 0;
        }
        if((s.top[1]-s.top[0])==1)
        {
            printf("栈满!\n");
            return 0;
        }
        switch(i)
        {
            case 0:s.stack[++s.top[0]]=x;
                   return 1;
                   break;
            case 1:s.stack[--s.top[1]]=x;
                   return 1;
                   break;
        }
    
    }//push
    
    //-------------------退栈---------------
    int pop(int i)
    {
        if(i<0||i>1)
        {
            printf("栈号输入错误!\n");
            return 0;
        }
        switch(i)
        {
            case 0:
                if(s.top[0]==-1)
                    {
                        printf("栈空\n");
                        return 0;
                    }
                return s.stack[s.top[0]--];
            case 1:
                if(s.top[1]==maxsize)
                {
                    printf("栈空\n");
                    return 0;
                }
               return s.stack[s.top[1]++];
        }
    }//pop
    
    
    //----------------------打印相应的栈------------------------
    void print()
    {
        int j=0;
        for(j=0;j<maxsize;j++)
        {
            printf("%d ",s.stack[j]);
        }
        printf("\n");
    }
    int main()
    {
        s.top[0]=-1;
        s.top[1]=maxsize;
        int i=0;
        i=push(0,1);
        if(i==1)
            printf("成功向栈0压入元素!\n");
        print();
    
         i=push(0,3);
        if(i==1)
            printf("成功向栈0压入元素!\n");
        print();
    
        i=push(1,2);
        if(i==1)
            printf("成功向栈1压入元素!\n");
        print();
    
          i=push(1,4);
        if(i==1)
            printf("成功向栈1压入元素!\n");
        print();
    
        i=pop(0);
            printf("删除栈0元素%d!\n",i);
    
        i=pop(1);
            printf("删除栈1元素%d!\n",i);
    
    }
    
    

    运行结果:
    这里写图片描述

    展开全文
  • 2017-03-15 14:04:00
    (1)对于顺序栈,如栈时,首先判断栈是否满了,栈满的条件是:s->top == MAXSIZE-1,栈满时不能入栈;否则出现空间溢出,引起错误,称为上溢。 (2)出栈和读栈顶元素操作,先判断栈是否为空,为空时不能操作...
  • 1*二者区别* *队列是插入在一端进行而删除在另一端进行 *栈是插入和删除只能在其... 判断栈满的条件 top==maxStackSize-14链式栈是非顺序存储的,而队列是顺序存储和链式存放5**栈里进行运算使用后缀表达式。** A*
  • 各种数据结构空,满条件判断

    千次阅读 2018-10-14 08:35:14
    由于链式存储是随意乱放,随意申请的存储结构,因此单链表,循环链表,双向链表皆不存在满的情况。 1、单链表 (不带头结点)空:head==NULL (带头结点)空:head->next==NULL 2、循环链表 空:head->next...
  • 判断栈满的条件是二个栈元素之和超过数组大小。 实现3个栈似乎有难度。。。 直观的想法是,将数组静态的分为3个区域以实施3个栈,这样的话,存储空间的使用会非常的不灵活。 对这个想法的一个优化是,3个栈的...
  • 基本运算 任务一: 顺序栈基本操作 ...栈满条件:s->top==MAXSIZE-1 栈未满才执行以下进栈操作 s->top++; s->data[s->top]=x; - 出栈 出栈操作需要判断栈是否为空 栈空条件:s->to
  • 栈的定义 栈是只能在一端插入和删除元素的线性表。 特性:后进先出 栈的术语 入栈(压栈):指将元素压入栈内。 出栈(弹栈):指将元素弹出栈。 栈顶:栈的顶部。...(2)判断栈为空: ...这里要注意栈满的情况。
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 (2)实验内容 用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。 (3)...
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 (2)实验内容 用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。 (3)...
  • 熟练掌握和队列的抽象数据类型,能在相应的应用问题中正确选用它们,熟练掌握和队列的实现方法(顺序和链式),两种存储结构和基本操作的实现算法,注意空和满的判断条件及它们的描述方法,掌握循环队列与其它...
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 三. 设计思想 首先声明全局变量checkStatus用于判断栈是否创建,定义栈的顺序存储表示,定义ElemType类型的栈顶指针top,栈底指向base和栈的...
  • 栈S1与栈S2,有判断栈满函数Isfull(),判栈空IsEmpty(),入栈push(),出栈pop();用这些基本操作来实现EnQueue(),DeQueue(),IsQueueEmpty()函数; 基本思路:栈具有先进后出特性,所以我们用s1来存储进队元素,用s2...
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 (2)实验内容 用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。 (3)...
  • judge 是判断 栈满,input是输入函数 初始 top是-1 if( judge (seq ) )条件一开始就成立了?!?! 但是我输入 printf(“%d”,judge (seq )显示结果是-1,并且就应该是-1 解决方法有,但我想知道为...
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 实验内容 用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制、八进制或十六进制。 参考界面 菜单...
  • 初始条件不同,判断栈空和栈满的条件也不同,注意一下 队列 线性表,栈,队列之间关系。 栈和队列都是一种特殊的线性表 判断队列已满/已空 对于队头队尾指针 栈的应用(后进先出) 1.用...
  • 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则...
  • 栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。 (2)实验内容 用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制。 (3)参考界面 (4)验收/...
  • C++  实验

    2020-06-04 21:56:04
    (2)熟悉顺序栈组织方法,栈满、栈空的判断条件及其描述; (3)掌握栈基本操作(进栈、退栈等)。 2.实验内容: (1)设计一个算法,将一般算术表达式转化为逆波兰表达式,并求逆波兰表达 式值。 (2)设计...
  • 数据结构-和队列

    千次阅读 多人点赞 2021-03-10 16:58:15
    栈和队列 栈 定义: 只能在一端进行插入或删除操作线性表 约束条件: 只能在一端进行插入或删除操作 一端: 可以插入或者删除元素一端叫栈顶,另一端叫栈底 ...判断栈满: if(top==maxSize-1) return 1; 链
  • 数据结构--

    2021-04-04 08:50:03
    (3)判断栈是否:若return ture,否则return false (4)取栈顶元素: 条件:栈不为空 (5)入栈:将元素放到栈顶 (6)出栈:删除当前栈顶元素 顺序栈 stack类完整描述 封装类: class stack{ public: ...
  • 关于循环队列的队与队空的条件都是front=rear,如何区分,对于这些问题,刚学习的我有一些简单的认识,希望大家能指正我的错误 设立一个tag标识再加上rear=front即可作为队与队空的判断依据,在入队时tag=1,出...
  • (2)熟悉顺序栈组织方法,栈满、栈空的判断条件及其描述; (3)掌握栈基本操作(进栈、退栈等)。 2.实验内容 (1)设计一个算法,将一般算术表达式转化为逆波兰表达式,并求逆波兰表达 式值。 (2)...
  • 如果是数字直接入栈,也可以判断栈是否已,在入栈 如果是字符,自定义字符级别,判断字符级别是多少。如果大于字符栈栈底字符,就直接加入。反之取出数字栈两个数字,再从字符栈取出一个字符(因为栈是先进先...
  • 本篇博客遇上篇博客不同,不需要家条件判断栈是否为,为了提高效率我们可以使用链表前插法来表示栈,整体使用方法和单链表类似 /*数据结构与算法之 栈链式存储 实验目的: (1) 实现栈存储结构设计; (2) 实现栈...
  • 1.本周学习总结(0--1分) 谈谈你对栈和队列结构的认识及学习体会 ...为了最大化栈的利用空间,可以使用共享栈来存储数据,从两边分别进栈向中间伸展,共享栈要注意的是判断栈空和栈满的条件和普通栈不大...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

判断栈满的条件