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;
    }

     

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

  • 相关阅读:
    test deploy
    SpringBoot+Spring Session+Redis实现Session共享及踩坑记录
    登录接口取cookie
    pycharm设置自动调节字体大小
    ClickHouse高可用集群
    clickhouse 常用命令(三)
    clickHouse常用命令(一)
    ClickHouse表引擎
    clickhouse基本数据类型
    手写滚动条设计----直接粘贴
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252044.html
Copyright © 2011-2022 走看看