Queue.h
上传用户:chen_dj
上传日期:2013-04-22
资源大小:111k
文件大小:2k
源码类别:

多国语言处理

开发平台:

C/C++

  1. /****************************************************************************
  2.  *
  3.  * Copyright (c) 2000, 2001 
  4.  *     Software Research Lab.
  5.  *     Institute of Computing Tech.
  6.  *     Chinese Academy of Sciences
  7.  *     All rights reserved.
  8.  *
  9.  * This file is the confidential and proprietary property of 
  10.  * Institute of Computing Tech. and the posession or use of this file requires 
  11.  * a written license from the author.
  12.  *
  13.  * Abstract:
  14.  *           Queue 
  15.  * Author: Kevin Chang (zhanghp@software.ict.ac.cn)
  16.  *
  17.  * Notes:
  18.  *                
  19.  * 
  20.  ****************************************************************************/
  21. // Queue.h: interface for the CQueue class.
  22. //
  23. //////////////////////////////////////////////////////////////////////
  24. #if !defined(AFX_QUEUE_H__382C7319_66D8_4041_ABA2_EE25B9D15D9C__INCLUDED_)
  25. #define AFX_QUEUE_H__382C7319_66D8_4041_ABA2_EE25B9D15D9C__INCLUDED_
  26. #if _MSC_VER > 1000
  27. #pragma once
  28. #endif // _MSC_VER > 1000
  29. #include "DynamicArray.h"
  30. struct tagQueueElem{
  31.     unsigned int nParent;//the weight
  32. unsigned int nIndex;//number of index in the parent node
  33. ELEMENT_TYPE eWeight;//the weight of last path
  34.     struct tagQueueElem *next;
  35. };
  36. typedef struct tagQueueElem QUEUE_ELEMENT,*PQUEUE_ELEMENT;
  37. class CQueue  
  38. {
  39. public:
  40. bool IsSingle();
  41. bool IsEmpty(bool bBrowsed=false);
  42. int Push(unsigned int nValue=0,//The value for parent node
  43.  unsigned int nIndex=0,//number of index in the parent node
  44.              ELEMENT_TYPE eWeight=0//the weight of last path 
  45.  );
  46. int Pop( unsigned int *npValue,//The value for node
  47.  unsigned int *npIndex,//number of index in the parent node
  48.      ELEMENT_TYPE *epWeight=0,//the weight of last path 
  49.  bool  bModify=true,//false: not modify the data
  50.  bool bFirstGet=true//first get data,just for browse 
  51.    );
  52. CQueue();
  53. virtual ~CQueue();
  54. private:
  55. PQUEUE_ELEMENT m_pHead;//The chain sort according the weight of shortest path
  56. PQUEUE_ELEMENT m_pLastAccess;//The node last accessed
  57. };
  58. #endif // !defined(AFX_QUEUE_H__382C7319_66D8_4041_ABA2_EE25B9D15D9C__INCLUDED_)