Advertisement
Guest User

Untitled

a guest
Dec 30th, 2011
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. typedef struct __stack
  2. {
  3. struct __stack *next;
  4. int value;
  5. }stack;
  6.  
  7. class Stack
  8. {
  9. public:
  10. Stack();
  11. void Push(int value);
  12. void Pop(void);
  13. void Print(void);
  14. void Read(int pos);
  15. void Write(int pos,int value);
  16. int Size(void);
  17. void Delete(void);
  18. private:
  19. stack *p;
  20. };
  21.  
  22. Stack::Stack(void)
  23. {
  24. p=new stack;
  25. p->value=0;
  26. p->next=NULL;
  27. }
  28.  
  29.  
  30. void Stack::Push(int value)
  31. {
  32. stack *ptr=p;
  33. while(ptr->next!=NULL)
  34. ptr=ptr->next;
  35. ptr->next=new stack;
  36. ptr=ptr->next;
  37. ptr->value=value;
  38. ptr->next=NULL;
  39. }
  40.  
  41. void Stack::Pop(void)
  42. {
  43. stack *ptr=p,*prev=p;
  44. while(ptr->next!=NULL)
  45. {
  46. prev=ptr;
  47. ptr=ptr->next;
  48. }
  49. if(ptr!=p)
  50. {
  51. delete ptr;
  52. prev->next=NULL;
  53. }
  54. }
  55.  
  56. void Stack::Print(void)
  57. {
  58. stack *ptr=p;
  59. ptr=ptr->next;
  60. while(ptr!=NULL)
  61. {
  62. cout << ptr->value << "\t";
  63. ptr=ptr->next;
  64. }
  65. cout <<"\n";
  66. }
  67.  
  68. void Stack::Read(int pos)
  69. {
  70. stack *ptr=p;
  71. int i;
  72. pos++;
  73. if(pos>0)
  74. {
  75. for(i=0;i<pos;i++)
  76. if(ptr->next!=NULL)
  77. ptr=ptr->next;
  78. cout << ptr->value <<endl;
  79. }
  80. }
  81.  
  82. void Stack::Write(int pos,int value)
  83. {
  84. int i;
  85. stack *ptr=p;
  86. pos++;
  87. if(pos>0)
  88. {
  89. for(i=0;i<pos;i++)
  90. if(ptr->next!=NULL)
  91. ptr=ptr->next;
  92. ptr->value=value;
  93. }
  94. }
  95.  
  96. int Stack::Size(void)
  97. {
  98. int i=1;
  99. stack *ptr=p;
  100. while(ptr->next!=NULL)
  101. {
  102. ptr=ptr->next;
  103. i++;
  104. }
  105. return i;
  106. }
  107.  
  108. void Stack::Delete(void)
  109. {
  110. stack *ptr=p,*prev=ptr;
  111. while(ptr->next!=NULL)
  112. {
  113. ptr=p;
  114. prev=ptr;
  115. while(ptr->next!=NULL)
  116. {
  117. prev=ptr;
  118. ptr=ptr->next;
  119. }
  120. if(ptr!=p)
  121. {
  122. delete ptr;
  123. prev->next=NULL;
  124. }
  125. ptr=p;
  126. }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement