c++用类写栈和队列的简单基本操作(实验)
继续更文。这次用类来写栈和队列,都是用数组模拟的;
以下是栈和队列的定义:

然后分别是栈和队列的类:


完整代码贴上:
栈
//使用类来定义栈
class ZHAN
{
public:
STACK s;
//栈的基本操作
void csh(STACK & s); //初始化
bool isempty(STACK & s); //判断是否为空
bool isfull(STACK & s); //判断是否为满
bool push(STACK & s,int val); //入栈
bool pop(STACK & s,int & val); //出栈
int ding(STACK & s); //取栈顶元素
int len(STACK & s); //取栈的长度(有效元素个数)
void SHOW(STACK & s); //遍历栈
};
void ZHAN::csh(STACK & s)
{
s.top=-1;
}
bool ZHAN::isempty(STACK & s)
{
if(-1==s.top)
return true;
else
return false;
}
bool ZHAN::isfull(STACK & s)
{
if(s.top==MAX-1) //下标从零开始
return true;
else
return false;
}
bool ZHAN::push(STACK & s,int val)
{
if(isfull(s))
return false;
else
{
s.data[++s.top]=val; //top指针从-1开始 所以先++才能用
return true;
}
}
bool ZHAN::pop(STACK & s,int & val)
{
if(isempty(s))
return true;
else
{
val=s.data[s.top--];
return true;
}
}
int ZHAN::ding(STACK & s)
{
if(isempty(s))
{
cout<<"此栈为空栈!!"<<endl;
}
else
{
return s.data[s.top];
}
}
int ZHAN::len(STACK & s)
{
return s.top+1;
}
void ZHAN::SHOW(STACK & s)
{
int i;
while(!isempty(s)) //当栈不为空 不断的出栈取值
{
pop(s,i);
cout<<i<<endl;
}
}
队列
//使用类来定义队列
class DUILIE
{
public:
QUEUE q;
//队列的基本操作
void csh(QUEUE & q); //初始化
bool isempty(QUEUE & q); //判断是否为空
bool isfull(QUEUE & q); //判断是否为满
int head(QUEUE & q); //取队头元素
bool pop(QUEUE & q,int & val); //将队头元素出队
bool push(QUEUE & q,int val); //将队尾元素入队
void SHOW(QUEUE & q); //遍历队列
};
void DUILIE::csh(QUEUE & q)
{
q.f=-1;
q.r=-1;
}
bool DUILIE::isempty(QUEUE & q)
{
return q.f==q.r?true:false;
}
bool DUILIE::isfull(QUEUE & q)
{
if(q.r==MAX-1)
return true;
else
return false;
}
int DUILIE::head(QUEUE & q)
{
if(isempty(q))
{
cout<<"此队列为空!!"<<endl;
}
else
{
return q.data[q.f+1];
}
}
bool DUILIE::pop(QUEUE & q,int & val)
{
if(isempty(q))
return false;
else
{
val=q.data[++q.f];
return true;
}
}
bool DUILIE::push(QUEUE & q,int val)
{
if(isfull(q))
return false;
else
{
q.data[++q.r]=val;
return true;
}
}
void DUILIE::SHOW(QUEUE & q)
{
if(isempty(q))
cout<<"此队列为空!!"<<endl;
else
{
for(int i=q.f+1; i<=q.r; i++)
cout<<q.data[i]<<" ";
cout<<endl;
}
}
实验效果如如下:

老规矩,有错改之,无则加勉。
一起学习,一起进步。
去吃饭了哈哈。
因为我的代码是贴上去的 而不是写的 居然说不足150字不让发布
以下是凑字数的,忽略忽略;
山不在高,有仙则名。水不在深,有龙则灵。斯是陋室,惟吾德馨。苔痕上阶绿,草色入帘青。谈笑有鸿儒,往来无白丁。可以调素琴,阅金经。无丝竹之乱耳,无案牍之劳形。南阳诸葛庐,西蜀子云亭。孔子云:何陋之有?
c++用类写栈和队列的简单基本操作(实验)的更多相关文章
- hdu 1702 栈和队列的简单应用
#include<stdio.h> #include<string.h> #include<queue> #include<stack> using n ...
- C++自带栈与队列_stack_queue_C++
栈和队列我们可以用C++里自带的函数使用,就不必手写了 1.栈,需要开头文件 #include<stack> 定义一个栈s:stack<int> s; 具体操作: s.emp ...
- Javascript用数组实现栈和队列
栈是遵循后进先出(LIFO)规则的一种有序集合,比如桌上的一叠书,我们只能从上面放或取. 队列是遵循先进先出(FIFO)规则的一种有序集合,比如排队,先排到的先离开. 数组也是一种有序的集合,它与上面 ...
- 从零开始写STL—栈和队列
从零开始写STL-栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决:主要解决在软件系统中,常常要将 ...
- 二、 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek)
请指教交流! package com.it.hxs.c01; import java.util.Stack; /* 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek) */ ...
- Stack栈类与、Queue队列与线性表的区别和联系
栈和队列都属于特殊的线性表 一.定义 1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...
- perl自定义简易的面向对象的栈与队列类
perl中的数组其实已经具备了栈与队列的特点,下面是对数组经过一些封装的stack,queue对象 1.Stack类 创建一个Stack.pm文件 package Stack; sub new{ $s ...
- 线性表 及Java实现 顺序表、链表、栈、队列
数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
随机推荐
- awk内置函数
gsub(r,s,t) 在字符串t中,用字符串s替换和正则表达式r匹配的所有字符串.返回替换的个数.如果没有给出t,缺省为$0 index(s,t) 返回s 中字符串t 的位置,不出现时为0 leng ...
- PTA 数据结构 银行业务队列简单模拟
仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...
- 阿里云centos配置postfix
1. 为了防止垃圾邮件,先到域名控制面板设置好. MX A 记录及TXT记录 其中TXT记录如下 @ spf1 a mx ~all 意思就是使用spf1协议,允许a记录和MX记录对应的IP,不允许 ...
- 3.Apache ZooKeeper数据模型
1. ZooKeeper自下向上的服务视图 Apache ZooKeeper是分布式应用程序的协调服务. 它旨在解决分布式应用程序中与组件协调相关的棘手问题. 它通过暴露一个简单而强大的接口来实现这一 ...
- MySQLbase
/*多行注释*/-- 单行注释-- 创建用户: CREATE USER '用户名'[@'主机名'] IDENTIFIED BY '密码'-- 主机名可以为空,省略主机名表示默认权限为%, 所有主机都可 ...
- 《项目架构那点儿事》——Hibernate泛型Dao,让持久层简洁起来
[前言]hibernate作为持久层ORM技术,它对JDBC进行非常轻量级对象封装,使得我们可以随心所欲的使用面向对象的思想来操作数据 库.同时,作为后台开发的支撑,的确扮演了一个举足轻重的角色,那么 ...
- linux C/C++开发环境搭建指南
一.安装基本开发环境 1.配置GCC 刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安 ...
- [转载] zookeeper应用——集中配置管理系统的实现
转载自http://blog.csdn.net/huangfengxiao/article/details/8844239 1 场景描述 参考http://www.ibm.com/developerw ...
- Python之numpy模块array简短学习
1.简介 Python的lists是非常的灵活以及易于使用.但是在处理科学计算相关大数量的时候,有点显得捉襟见肘了. Numpy提供一个强大的N维数组对象(ndarray),包含一些列同类型的元素,这 ...
- react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)
目前手机使用的一键分享SDK比较主流的有两个:一个是ShareSDK,另一个是友盟分享. 又因为友盟功能比较多且比较全,比如说友盟统计.友盟推送等,所以本文重点介绍的是友盟分享功能在rn上的应用以及要 ...