티스토리 뷰

공부 이야기

[C] Queue?

판다(panda) 2009. 1. 7. 00:01
Queue.h
// Queue.h: interface for the CQueue class.
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_QUEUE_H__53C50204_BCF9_45DF_8A69_7BA4AC7AB4FD__INCLUDED_)
#define AFX_QUEUE_H__53C50204_BCF9_45DF_8A69_7BA4AC7AB4FD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif
// _MSC_VER > 1000
#define      MAXQ      10
#define      EMPTY     -98384
class CQueue 
{
public:
              CQueue();
             virtual   ~CQueue();
              int        Enque(int nData);
              int        Deque();
private:
              int
        m_Queue[MAXQ];
              int        m_nFront,
                         m_nBack;
};
#endif // !defined(AFX_QUEUE_H__53C50204_BCF9_45DF_8A69_7BA4AC7AB4FD__INCLUDED_)
 
Queue.cpp
// Queue.cpp: implementation of the CQueue class.
//////////////////////////////////////////////////////////////////////
#include"Queue.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CQueue::CQueue()
{
           m_nFront = 0;
           m_nBack  = 0;
}
CQueue::~CQueue()
{
 
}
int CQueue::Enque(int nData)
{
           if(m_nBack == (m_nFront - 1))
                  return false;
           m_Queue[m_nBack] = nData;
           ++m_nBack;
           if(m_nBack >= MAXQ)
           m_nBack = 0;
           return true;
}
int CQueue::Deque()
{
           if(m_nFront+1 == m_nBack)
                 return EMPTY;
           int nTemp = m_Queue[m_nFront];
           ++m_nFront;
          if(m_nFront >= MAXQ)
                  m_nFront = 0;
           return nTemp;
}
main.cpp
#include <stdio.h>
#include
"Queue.h"
void main()
{
         CQueue Queue;
        int  nData = 0,
              nErr;
         for(int i=0; i<MAXQ; ++i)
   {
         nErr = Queue.Enque(i);
         if(!nErr)
                break;
         printf("Enque(%d)\n", i);
   }
         for(i=0; i<MAXQ; ++i)
   {
         nData = Queue.Deque();
         if(nData == EMPTY)
               break;
         printf("Deque(%d)\n", nData);
   }
}
 
Result