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

     

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

  • 相关阅读:
    IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
    IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)
    IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
    ibatis.net 中SqlMaps的xml文件的例子
    ibatis.net MVC 单元测试 错误解决方法
    TreeView checkbox 全选
    Win下Eclipse提交Hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=D
    端口被占用怎么办?如何查看win7电脑端口是否被占用
    Python 3.7运行别人的Python 3.8项目,报Cannot run program "D:pythonpython.exe"解决办法
    Python学习系列之常见错误TypeError,try...except...finally等异常处理机制(二十二)
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252044.html
Copyright © 2011-2022 走看看