问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教。为什么top 在push()函数中修改后,再次调用还是-1?

发布网友 发布时间:2022-04-23 14:19

我来回答

1个回答

热心网友 时间:2023-09-15 10:03

里面有一些小错误,比如溢出控制那里,将原来的数组数据赋值到新的数组,那里有错

然后你不应该在类的公有方法里面直接使用这个类对象,这样是不对的。我只是修改了类的一部分,仅供参考,你写到PrintMatchedPairs这个方法里的代码应该写到main函数里面去。

/*
*Author: QCQ
*email: qinchuanqing918@163.com
*created in: 2014/6/7
*/

# include <iostream>
# include <string>
using namespace std;

class SeqStack
{
private:
    char *elements;
int top;
int maxsize;
public :
~SeqStack()
{
    delete[]elements;
    }
SeqStack (int sz)
{
maxsize=sz;
top=-1;
elements=new char[maxsize];

}
/*SeqStack()
{
    top++;
}*/
int push(char ch);
char Pop();
char getTop ();
bool IsEmpty() const
{
    return (top==-1) ? true :false;
    }
    int getSize()const
    {
        return top+1;
    }
void makeEmpty()
{
    top=-1;
    delete []elements;
    }
    void overflowProcess();
void PrintMatchedPairs();



};
void SeqStack::overflowProcess()
{
char *newArray=new char[maxsize+50];
if(newArray=NULL)
{
   cerr<<"chucuo"<<endl;
}

for(int i=0;i<=top;i++)
    {
         newArray[i]=elements[i];
    }

maxsize+=50;
delete []elements;
elements=newArray;
};
int SeqStack::push (char ch)
{
top++;
cout<<"diao yong ";
elements[top]=ch;
cout<<elements[top];
cout<<top;
//SeqStack t;
return top;
}
char SeqStack::Pop ()
{
(IsEmpty()==true)
return NULL;
else
{

cout<<" D YD";
return elements[top--];
}

}
char SeqStack ::getTop()
{
char ch;
if(IsEmpty()==true)return NULL;

return elements[top];
}

为什么栈顶是-1?

因为用一个长度为n的数组顺序储存一个栈然而数组是从0~n-1栈空为top==n那么栈满为top==1。t数组长度固定为n,则可存储n个元素,top=n表示栈空,向栈中插入一个元素后,top-1=n-1,n个元素存储完了就满栈了,top的值就等于0了。

vlookup 的用法

Excel一键自动匹配,在线免费vlookup工具,3步完成!Excel在线免费vlookup工具,点击4步自动完成vlookup匹配,无需手写公式,免费使用!

数据结构中,为什么进栈(PUSH)时,置指针TOP=TOP+1栈指针加1,会使指针...

你这种思想就是最容易出现的惯性思维。栈顶可以是最低地址,这样的话,Push的时候要加1。栈顶还可以是最高地址,这样的话Push的时候要减1。具体要看栈顶的相对地址!

为什么栈的初始状态top等于m+1,则说明栈空时top=m+1?

这是因为栈的初始状态是确定的。而栈的初始状态,也就是栈空的状态。所以,如果当栈的初始状态top等于m+1。那栈空时的top就等于m+1了。栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元...

栈的初态为什么是top=m+1

top是指向最后一个元素上面的那个,所以是m+1 。

c++堆栈中 top() pop()的具体作用是什么

a.pop(); // 1 2a.push(4); // 1 2 4c = a.top(); // c = 4 本回答由电脑网络分类达人 郭强推荐 举报| 答案纠错 | 评论(1) 59 5 其他回答 top()是将指针置于堆栈顶部pop()是从堆栈中提取数据 热心网友| 发布于2013-06-19 举报| 评论(1) 2 17 ...

设栈的存储空间为S(1:m),初始状态为TOP=m+1。经过一系列入栈与退栈操 ...

m+1 。这个栈是从栈顶向栈底压的,一般平时是从栈底向栈顶压,这道题目中是倒过来的。若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出);置TOP=TOP+1(栈指针加1,指向进栈地址);S(TOP)=X,结束(X为新进栈的元素)。

看动画学算法之:栈stack

实际上很多虚拟机的结构都是栈。因为栈在实现函数调用中非常的有效。今天我们一起来看学习一下栈的结构和用法。栈的构成栈一种有序的线性表,只能在一端进行插入或者删除操作。这一端就叫做top端。定义一个栈,我们需要实现两种功能,一种是push也就是入栈,一种是pop也就是出栈。当然我们也可以定义...

push 3是什么意思?

exit(1);s-&gt;top++; // 栈顶指针向上移动 s-&gt;arr[s-&gt;top] = val; // 在栈顶插入新元素 在以上示例中,我们通过定义结构体来表示栈的基本属性,如栈顶指针和存储数据的数组。使用“push”函数将数字3压入栈中,只需要调用以下代码:struct stack s;init_stack(&amp;s);使用“push 3”实现计算机...

利用栈实现逆波兰表达式求值

stack[++top]=i; /*堆栈仍有空间,栈顶指示上移一个位置*/ return 0; } else /*堆栈已满,给出错误信息,返回出错指示*/ { printf("The stack is full"); return ERR; }} 我们在调用函数push时,如果它的返回值为0,说明入栈操作成功;否则,若返回值为ERR(在程序中说明为-1),说明入栈操作失败。3、从...

Array.prototype方法(12)findIndex

如果数组中的某个元素在回调函数被调用之前被删除,那么该元素仍然会被回调函数访问。当回调函数访问到被改变值的元素时,其值将是修改后的值。查找数组方法系列文章:查找数组方法(1):concat 查找数组方法(2):push 查找数组方法(3):pop 查找数组方法(4):unshift 查找数组方法(5):shift ...

push和pop函数是什么 push函数 pushback函数 c语言push函数 python push js数组push js中push pop和push 汇编pop和push详解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样启用苹果手机的语音功能呢? 自动回复软件(自动回复软件下载) 庐山的原名叫什么 庐山的命名由来和文化传说有哪些? 怎样轻松运营本地资讯网站 微信发图片怎么突然模糊了 怎么将excel表格中的数字去掉怎么将excel表格中的数字去掉一个_百度... ...由于没有工作经验,求职会计和出纳都是石沉大海,怎么办? 我想找一种测试工具。工作范围:软件测试,产品功能测试,电子相关器件... 有一个小米手机推荐游戏,我想不起来名字是英文的 音乐超级带感 好像... 我买农商银行的手机银行买了理财产品安不安全? 非常简单的栈,push()函数用第一个for限定为10次,实际为什么总是输入11次呢。 农商银行保本浮动型理财产品安全嘛 i-wifi和i-push是什么软件?是否是病毒? 农商行理财产品可靠吗? JavaScript为什么用push方法为数组添加新的索引的时候,会出现这种情 ... iPhone一代推送 i push怎么添加? 农商银行理财有风险吗 Queue[i].push(a[j]);什么意思 我在农商银行买了60万理财产品,年收益5.2%,风险大吗?本金会损失吗? 农商银行的理财产品一般情况下风险大吗? 农商银行的理财产品这个靠谱吗?有人试过亏损吗? 农商银行存款安全吗?农商银行理财安全吗? 看凤凰卫视为什么老死机 卫星电视接收机收看CCTV—5与凤凰卫视的好办法 看不了电影了凤凰视频提示加载失败。怎么办? 最近电脑总是蓝屏或者死机,尤其是看凤凰卫视的视频的时候。 移动智能网络顶盒机怎样收到凤凰卫视? 凤凰卫视视频为什么看不了 在看凤凰卫视为什么无法看全屏呢 嘉兴禾城农商银行上市的话,许多年前3万买入的原始股可以翻几倍?目前股金证已经有18万股了_百度问一问 、设将整数以万计、2、3、4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中, push是什么意思? I push you是什么意思? 1. 写一个入栈函数push(),要求输入一个字符串1234,并将结果1234保存 2. 写一个出栈函数pop(),输出结果 小学的说明方法(9种) “push”在英语中有“逼迫”的意思吗? 英语的经典句子 push在英语中有逼迫的意思吗 英语句子初中10个 初中英语句子 经典的英语句子(简短) 求。 中考用的英语经典句子!求您了……… 经典的英语句子? 菊乐酸奶包装上的数字15 20 19 代表什么 英语经典句子100个 200条初中英语句子 优美经典的英语句子 初中英语简单句子 菊乐酸奶保值期是多久