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]);
}
原文地址:https://www.cnblogs.com/xiangshancuizhu/p/3303247.html