• MyStack


    #pragma once
    
    
    class MyQueue
    {
    public:
        MyQueue();
        ~MyQueue();
        void Insert(int aValue);
        int Top();
        void Pop();
        void PrintQueue();
        void PrintHead();
    
    private:
        int GetIncreIndex(const int& aIndex);
    
    private:
        int* m_pData;
        int m_Length;
        int m_Count;
        int m_Head;
        int m_Tail;
    };
    View Code
    #include "MyQueue.h"
    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    #include <stdlib.h> 
    
    MyQueue::MyQueue( void )
    :m_pData(NULL)
    , m_Length(8)
    , m_Head(0)
    , m_Tail(0)
    , m_Count(0)
    {
        m_pData = (int*)malloc(sizeof(int)*m_Length);
        memset(m_pData,0,m_Length);
    }
    
    void MyQueue::Insert( int aValue )
    {
        m_pData[m_Tail] = aValue;
        m_Tail = (m_Tail+1)%m_Length;
        ++m_Count;
    
        if (m_Count == m_Length-1)
        {
            m_Length = m_Length << 2;
            m_pData = (int*)realloc(m_pData,sizeof(int)*m_Length);
        }
    }
    
    int MyQueue::Top()
    {
        return m_pData[m_Head];
    }
    
    void MyQueue::Pop()
    {
        if (m_Count == 0)
        {
            printf("NoData
    ");
            return;
        }
        m_Head = (m_Head+1)%m_Length;
        --m_Count;
    }
    
    MyQueue::~MyQueue()
    {
        delete []m_pData;
    }
    
    void MyQueue::PrintQueue()
    {
        if (m_Count > 0)
        {
            int lTempIndex = m_Head;
            do 
            {
                printf("%d ", m_pData[lTempIndex]);
                lTempIndex = GetIncreIndex(lTempIndex);
            } while (lTempIndex != m_Tail);
        }
    
        printf("
    ");
    }
    
    int MyQueue::GetIncreIndex( const int& aIndex )
    {
        return (aIndex+1)%m_Length;
    }
    
    void MyQueue::PrintHead()
    {
        if (m_Count==0)
        {
            printf("NoData
    ");
            return;
        }
        printf("Head: %d
    ",m_pData[m_Head]);
    }
  • 相关阅读:
    SpringCloud笔记(一)服务注册与发现
    个人备忘录
    ActiveMQ 消息持久化到Mysql数据库
    染色 [组合数 容斥]
    各种图床
    NOIP2012 疫情控制
    网格计数
    找钱 [多重背包 计数]
    序列[势能线段树]
    牛客挑战赛33 B-鸽天的放鸽序列
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3303247.html
Copyright © 2020-2023  润新知