继续更文。这次用类来写栈和队列,都是用数组模拟的;

以下是栈和队列的定义:

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

完整代码贴上:

//使用类来定义栈
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++用类写栈和队列的简单基本操作(实验)的更多相关文章

  1. hdu 1702 栈和队列的简单应用

    #include<stdio.h> #include<string.h> #include<queue> #include<stack> using n ...

  2. C++自带栈与队列_stack_queue_C++

    栈和队列我们可以用C++里自带的函数使用,就不必手写了 1.栈,需要开头文件 #include<stack>  定义一个栈s:stack<int> s; 具体操作: s.emp ...

  3. Javascript用数组实现栈和队列

    栈是遵循后进先出(LIFO)规则的一种有序集合,比如桌上的一叠书,我们只能从上面放或取. 队列是遵循先进先出(FIFO)规则的一种有序集合,比如排队,先排到的先离开. 数组也是一种有序的集合,它与上面 ...

  4. 从零开始写STL—栈和队列

    从零开始写STL-栈和队列 适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决:主要解决在软件系统中,常常要将 ...

  5. 二、 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek)

    请指教交流! package com.it.hxs.c01; import java.util.Stack; /* 编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek) */ ...

  6. Stack栈类与、Queue队列与线性表的区别和联系

    栈和队列都属于特殊的线性表   一.定义   1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...

  7. perl自定义简易的面向对象的栈与队列类

    perl中的数组其实已经具备了栈与队列的特点,下面是对数组经过一些封装的stack,queue对象 1.Stack类 创建一个Stack.pm文件 package Stack; sub new{ $s ...

  8. 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...

  9. Java数据结构和算法 - 栈和队列

    Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...

随机推荐

  1. 负载均衡集群企业级应用实战—LVS

    一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...

  2. 动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )

    1.问题描述 给定一个字符串(序列),求该序列的最长的回文子序列. 2.分析 需要理解的几个概念: ---回文 ---子序列 ---子串 http://www.cnblogs.com/LCCRNblo ...

  3. Problem H

    Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个 ...

  4. Linux系列教程(十二)——Linux软件包管理之yum在线管理

    上一篇博客我们介绍了rpm包管理之rpm命令管理,我们发现在使用rpm命令手动安装rpm包的时候,会发现安装遇到到的依赖让你痛不欲生,安装一个rpm时会要先先安装某个依赖的rpm,而安装这个依赖的rp ...

  5. HTTP服务简介

    第1章 HTTP服务介绍 1.1 简述用户访网站流程 a 进行域名信息的DNS解析   dig +trace 获得www.oldboyedu.com  ip地址信息 b 进行与网站服务器建立连接,tc ...

  6. C++编程求数组中重复的数字

    题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...

  7. CodeForces - 706B 二分stl

    #include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...

  8. 《Github入门与实践》读书笔记 蟲咋先生的追求之旅(上)

    <Github入门与实践>作者: [日] 大塚弘记 译者:支鹏浩/刘斌   简介 本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作 ...

  9. Katana-CookieAuthenticationMiddleware-源码浅析

    准备工作 第一步,建立一个模板项目 本文从CookieAuthenticationMiddleware入手分析,首先我们来看看哪里用到了这个中间件,打开VisualStudio,创建一个Mvc项目,然 ...

  10. HTTP-FLV直播初探

    目前几种视频流的简单对比: 协议 httpflv rtmp hls dash 传输方式 http流 tcp流 http http 视频封装格式 flv flv tag Ts文件 Mp4 3gp web ...