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

求大神解释入栈 出栈 主函数的每条代码

发布网友 发布时间:2022-05-30 05:11

我来回答

1个回答

热心网友 时间:2023-10-09 23:56

//你明确说一下哪里不明白 注释还可以啊 
#include<iostream>

using namespace std;

class IntStack{                             //整数栈类

public:

  virtual void push(int)=0;                 //入栈

  virtual int pop()=0;                      //出栈并返回出栈元素

  virtual int topElement()const=0;          //返回栈顶元素,但不出栈

  virtual bool isEmpty()const=0;            //判断是否栈空

};

class SeqStack: public IntStack{

  int data[100];   // 存放栈元素的数组

  int top;         // 栈顶元素的下标

public:

  //**********found**********

  SeqStack():top(-1){}            // 把top初始化为-1表示栈空

  void push(int n){ data[++top]=n; } //下标+1 压入栈 这里没什么难得吧。

  //**********found**********

  int pop(){ return data[top--]; }  //同样 先取栈顶元素,然后下标-1

  int topElement()const{ return data[top]; } //取栈顶元素

  bool isEmpty()const{ return top==-1; }  //判断是否为空

};

struct Node{

  int data;

  Node *next;

};

class LinkStack: public IntStack{

  Node *top;

public:

  //**********found**********

  LinkStack(): top(NULL){}     // 把top初始化为NULL表示栈空

  void push(int n){ 

    Node *p=new Node;  //new一个新Node

    p->data=n;    //将n赋值给值域

    //**********found**********

    p->next=top;  //将p的指针域指向top

    top=p;    //将top指向p 采用的头插法

  }

  int pop(){ 

    int d=top->data;; //这里先取栈顶的元素

    top=top->next;  //top指针略过栈顶的元素 下一个元素成为栈顶元素 //这里做法不严谨 需要把节点的内存释放掉

    return d;    

  }

  int topElement()const{ return top->data; }

  bool isEmpty()const{ return top==NULL; }

};

void pushData(IntStack &st){

  st.push(8);

  st.push(1);

  st.push(3);

  st.push(6);

  st.push(4);

}

void popData(IntStack &st){

  while(!st.isEmpty()) cout<<st.pop()<<' '; //不为空一直pop

}

int main(){

  SeqStack st1; pushData(st1); popData(st1); //两个测试函数 把数据压栈 然后出栈。。

  cout<<endl;

  LinkStack st2; pushData(st2); popData(st2);

  cout<<endl;

  return 0;

}

追问再麻烦一下, p->data=n; //将n赋值给值域是什么意思?

追答。。。就是 结点一般有一个 存数据的地方 一个 指针 数据的地方 就叫值域

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁能给个单机版的风云之雄霸天下啊?? 求风云雄霸天下PC单机游戏WIN7版 雄霸天下任务指南 开心网001老房子卖了以后家具还有吗? 为什么001开心网买房子组件删除仓库里的东西都没了 请教一下,开心001的开心庄园里面的建材有好多富余的的 除了5元一个卖... 开心网001小号怎么给大号送房子? 开心网001多少级能送别人房子?多少级能接受别人给的房子? 开心网001果实或家具能送人吗 开心网(kaixin001)怎么买外地房子? 问基础问题:关于链栈的 入栈 出栈 操作 代码,有几处不懂 链栈的入栈出栈代码 梅格瑞恩 最精彩的电影 薪资宝好不好用 X皮书(如白皮书)是什么含义? 薪工宝这个平台的优势是什么?这个平台好不好? 国家发布的 &quot;白皮书&quot; &quot;蓝皮书&quot; 是什么意思? 谢谢! 白皮书,蓝皮书是什么东东啊? 邦佑人力的灵活用工薪工宝平台是一个怎样平台? 看到宣传册上固话有一个功能叫呼叫等待,这是一个怎样的功能? 怎样的才算侵权?如果我给电信做宣传册在百度上搜张带人的图片放上算不算侵权??? 主动脉术后内漏算医疗事故吗? 筛豆炎是怎么回事? 筛窦炎并发症及临床表现 您好,田医生 河南省内做心脏搭桥手术最好、最专业的医院是哪家呢? 我母亲冠心病挺严重的,希望您能... 这什么病。 左心辅助装置的适用范围 一年级怎么写 屋里种树写一篇作文 bob打算周末和rose一起去种树,正在请教爸爸如何种树的作文 入栈出栈方式C++代码实现 代码表示进栈为1342出栈如何为1234 表达式求值代码中要求显示出栈入栈过程的代码怎么写 编写一个C源程序,其中包含顺序表示的空栈的创建、判断栈是否为空、进栈、出栈、取栈顶元素等操作。 出栈入栈方式C++代码实现 数据结构与算法中的栈的进栈、出栈、输出?帮我看下哪里错了,代码。 c++栈的基本操作代码 高手讲讲 菜鸟~~ 打王者荣耀s联赛需要交多少报名费 英雄联盟什么是s系列赛 LOL,S系列比赛中国队就不能赢个冠军吗? QQ飞车S联赛有哪些活动 英雄联盟s系列的比赛被称为什么 lol职业选手参加s系列比赛次数 苏州坐车到周庄后去古镇怎么走 高一年级寒假作业答案(山东人民出版社) 想自己卷烟去哪买烟草 跪求山东人民出版社答案高一寒假作业答案 全部的 关于人钱鸟的成语大全 这个电脑配置能不能流畅吃鸡 到哪里去买烟?