stack.h
上传用户:cjd055
上传日期:2013-04-01
资源大小:608k
文件大小:1k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. //owner defined stack
  2. class MYSTACK
  3. {
  4. /***********************************/
  5. /***********************************/
  6. /**            成员变量:         **/
  7. /***********************************/
  8. /***********************************/
  9. public:
  10. HGLOBAL hMem;
  11.    POINT *lpMyStack;
  12. LONG  ElementsNum;
  13. LONG  ptr;
  14. ////////////////////////////////////////////////////////////////
  15. BOOL InitStack(HWND hWnd,LONG StackLen)
  16. {
  17. ElementsNum=StackLen;
  18. if((hMem=GlobalAlloc(GHND,ElementsNum*sizeof(POINT)))==NULL)
  19. {
  20.      MessageBox( hWnd,"Error alloc memory!","ErrorMessage",MB_OK|
  21.                    MB_ICONEXCLAMATION);
  22. return FALSE;
  23. }
  24. lpMyStack=(POINT *)GlobalLock(hMem);
  25. memset(lpMyStack,0,ElementsNum*sizeof(POINT));
  26. ptr=0;
  27. return TRUE;
  28. }
  29. ////////////////////////////////////////////////////////////////
  30. void DeInitStack()
  31. {
  32. GlobalUnlock(hMem);
  33. GlobalFree(hMem);
  34. ElementsNum=0;
  35. ptr=0;
  36. }
  37. ////////////////////////////////////////////////////////////////
  38. BOOL MyPush(POINT p)
  39. {
  40. POINT *TempPtr;
  41. if(ptr>=ElementsNum)
  42. return FALSE;
  43. TempPtr=(POINT *)(lpMyStack+ptr++);
  44. (*TempPtr).x=p.x;
  45. (*TempPtr).y=p.y;
  46. return TRUE;
  47. }
  48. ////////////////////////////////////////////////////////////////
  49. POINT MyPop()
  50. {
  51. POINT InvalidP;
  52. InvalidP.x=-1;
  53. InvalidP.y=-1;
  54. if(ptr<=0)
  55. return InvalidP;
  56. ptr--;
  57. return *(lpMyStack+ptr);
  58. }
  59. ////////////////////////////////////////////////////////////////
  60. BOOL IsStackEmpty()
  61. {
  62. return (ptr==0)?TRUE:FALSE;
  63. }
  64. };