zoukankan      html  css  js  c++  java
  • 数据结构学习记录连载9(队列的学习)

    基本要求:

    1) 建立顺序循环队列类SeqQueue。

    2) 编写程序判断一个字符序列是否是回文。

    提高要求:

    1) 建立链式循环队列类LinQueue。

    2) 编写程序判断一个字符序列是否是回文。

     

    1.SeqQueue.h:顺序循环队列类的定义与实现

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqQueue.h
    * 摘 要: 顺序循环队列类的定义与实现
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月18日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include <iostream.h>

    #include <stdlib.h>

    const int MaxQueueSize = 100;

    class SeqQueue

    {

    private:

         DataType data[MaxQueueSize];

         int front;

          int rear;
     int count;
    public:
        SeqQueue (void)        // 构造函数,空队列
     {
      front = rear = 0;
      count = 0;
     };

     ~SeqQueue (void)
     {};  //析构函数

     void QueueInsert(const DataType& item);  //入队列
     DataType QueueDelete(void);     //出队列        
     DataType QueueFrontData(void) const;  //读队头元素值 
     
        int QueueIsEmpty(void) const    //判队列是否为空
     {
      return front == rear ? 1 : 0;
     };

     void ClearSeqQueue(void)     //清空队列
     {
      front = rear = 0;
      count = 0;
     };
     int GetQueueSize(void) const    //取队列元素个数
     {
      return count;
     };
    };

    void SeqQueue::QueueInsert(const DataType& item)
    {
     if (front == MaxQueueSize)
     {
      cout << "队列已满" << endl;
      exit(0);
     }

     data[rear] = item;
     rear = (rear + 1) % MaxQueueSize;
     count++;
    }

    DataType SeqQueue::QueueDelete(void)    //出队列 
    {
     DataType temp;
     if (count == 0)
     {
      cout << "队列空!" << endl;
      exit(0);
     }

     temp = data[front];
     front = (front + 1)%MaxQueueSize;
     count--;
     return temp;
    }      

    DataType SeqQueue::QueueFrontData(void) const   //读队头元素值 
    {
     if (count == 0)
     {
      cout << "队列空!" << endl;
      exit(0);
     }

     return data[front];
    }

     

    2.SeqStackTest.cpp:测试顺序队列的功能,实现判断是否回文

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqStackTest.cpp
    * 摘 要: 测试顺序队列的功能,实现判断是否回文
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月18日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include <stdlib.h>
    #include <iostream.h>
    #include <string.h>

    typedef char DataType;

    #include "SeqQueue.h"
    #include "SeqStack.h"

    int main(void)
    {
     SeqStack myStack;
     SeqQueue myQueue;
     char str[80];

     cout << "输入字符序列,回车换行符结束:" << endl;
     cin.getline(str, 80);
     int h = strlen(str);
     for (int i=0; i<h; i++)
     {
      myQueue.QueueInsert(str[i]);
      myStack.Push(str[i]);
     }

     while (!myQueue.QueueIsEmpty())
     {
      if (myQueue.QueueDelete() != myStack.Pop())
      {
       cout << "不是回文" << endl;
       return 0;
      }
     }
     cout << "是回文" << endl;
     return 0;
    }

     

    说明:用到的堆栈头文件是前面实现的。

  • 相关阅读:
    【SpringMVC】数据校验时,抛出javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.util.Date.
    【SpringMVC】添加操作时返回400
    【c#】 使用Directory.GetFiles获取局域网中任意电脑指定文件夹下的文件
    【opencv】Java实现opencv 调用本地摄像头,实现人脸识别、人形识别、人眼识别
    【opencv】Java实现的opencv3.x版本后Highhui报错
    【opencv】Java+eclipse+opencv 环境搭建 helloword入门demo
    【微信小程序】--小程序中循环遍历(包括js中遍历和wxml中的遍历)
    【微信小程序】--bindtap参数传递,配合wx.previewImage实现多张缩略图预览
    linux命令:tail
    system()
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252044.html
Copyright © 2011-2022 走看看