STACK.H
上传用户:wszmarenbt
上传日期:2013-04-26
资源大小:2552k
文件大小:1k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //THE FILE INCLUDES THE CLASS "NODE" "LIST" "STACK" "QUEUE"
  2. //FILE STACK.H
  3. #include    <stdio.h>
  4. #include    <conio.h>
  5. #include <iostream.h>
  6. class NODE
  7. {
  8. friend class LIST;
  9. private:
  10. NODE *NEXT;
  11. int  DATA;
  12. };
  13. class LIST
  14. {
  15. private:
  16. NODE *HEAD; //Head of list
  17. public:
  18. LIST()
  19. {
  20. HEAD=0;
  21. }
  22. void FORWARD_ADD(int Data);
  23. void BACKWARD_ADD(int Data);      //Add to the tail of the list
  24. int  GET();   //Remove the head of the list
  25. ~LIST(){};
  26. };
  27. void LIST::FORWARD_ADD(int Data)
  28. {
  29. NODE *BUFFER;
  30. BUFFER=new NODE;
  31. BUFFER->DATA=Data;
  32. if (HEAD==0)      /*Add an head node*/
  33. {
  34. BUFFER->NEXT=0;    /**/
  35. HEAD=BUFFER;
  36. }
  37. else              /*Add one node in the head*/
  38. {
  39. BUFFER->NEXT=HEAD;
  40. HEAD=BUFFER;
  41. }
  42. }
  43. void LIST::BACKWARD_ADD(int Data)
  44. {
  45. NODE *NEWNODE;
  46. NODE *TEMP;
  47. NODE *PREVIOUS;
  48. if (HEAD==0)
  49. {
  50. HEAD=new NODE;
  51. HEAD->DATA=Data;
  52. HEAD->NEXT=0;
  53. }
  54. else /*HEAD != 0*/
  55. {
  56. /*search for the last node*/
  57. TEMP=HEAD->NEXT;
  58. PREVIOUS=HEAD;
  59. while (TEMP!=0)
  60. {
  61. PREVIOUS=TEMP;
  62. TEMP=TEMP->NEXT;
  63. }
  64. /*Go to the end.And add a new one.*/
  65. NEWNODE=new NODE;
  66. NEWNODE->DATA=Data;
  67. NEWNODE->NEXT=0;
  68. PREVIOUS->NEXT=NEWNODE;
  69. }
  70. }
  71. int LIST::GET()
  72. {
  73. int Data;
  74. NODE *PREVIOUS;
  75. if (HEAD==0)
  76. {
  77. printf("nn The stack is EMPTY!");
  78. return 0;
  79. }
  80. else
  81. {
  82. PREVIOUS=HEAD;
  83. Data=HEAD->DATA;
  84. HEAD=HEAD->NEXT;
  85. delete PREVIOUS;
  86. return Data;
  87. }
  88. }