wendy890711

0610資料鏈結-佇列

Jun 10th, 2019
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. // ConsoleApplication1.cpp : 定義主控台應用程式的進入點。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. using namespace std;
  7.  
  8.  
  9. class node{
  10. public:
  11. int data;
  12. node* next;
  13. };
  14.  
  15. class mystack{
  16. public:
  17. node*head;
  18. mystack(){ head = new node(); head->next = NULL; }
  19. void push(int i);
  20. void list();
  21. void pop();
  22. };
  23.  
  24. void mystack::push(int i)
  25. {
  26. node*x = new node();
  27. //x->next = NULL;
  28. x->data = i;
  29.  
  30. if (head->next == NULL)
  31. {
  32. head->next = x;
  33. return;
  34. }
  35.  
  36. node*p = head;
  37. while (p->next != NULL)
  38. p = p->next;
  39. x->next = p->next;
  40. p->next = x;
  41.  
  42. }
  43.  
  44. void mystack::list(){
  45. if (head->next == NULL){
  46. cout << "empty" << endl;
  47. return;
  48. }
  49. node *p = head;
  50. while (p->next != NULL)
  51. {
  52. p = p->next;
  53. cout << p->data << endl;
  54. }
  55.  
  56. }
  57.  
  58. void mystack::pop(){
  59.  
  60. if (head->next == NULL){
  61. cout << "無資料" << endl;
  62. return;
  63. }
  64. node*current=head;
  65. node*pre = NULL;
  66.  
  67. while (current->next != NULL)
  68. {
  69. pre = current;
  70. current = current->next;
  71. }
  72.  
  73. cout << current->data << endl;
  74. delete current;
  75. pre->next = NULL;
  76. }
  77.  
  78. class myqueue{
  79. public:
  80. node*head;
  81. myqueue(){ head = new node(); head->next = NULL; }
  82. void enqueue(int i);
  83. void dequeue();
  84. };
  85.  
  86. void myqueue::enqueue(int i){
  87. node*x = new node();
  88. x->data = i;
  89.  
  90. if (head->next == NULL)
  91. {
  92. head->next = x;
  93. return;
  94. }
  95.  
  96. node*p = head;
  97. while (p->next != NULL)
  98. p = p->next;
  99. p->next = x;
  100. }
  101.  
  102. void myqueue::dequeue(){
  103. if (head->next == NULL){
  104. cout << "無資料" << endl;
  105. return;
  106. }
  107. node*current = head;
  108. node*pre = NULL;
  109.  
  110. if (current->next != NULL)
  111. {
  112. current = current->next;
  113. cout << current->data << endl;
  114. pre = current->next;
  115. head->next = pre;
  116. delete current;
  117. }
  118. }
  119.  
  120. void main()
  121. {
  122. myqueue st1;
  123. st1.enqueue(1);
  124. st1.enqueue(2);
  125. st1.enqueue(3);
  126. st1.enqueue(4);
  127. st1.dequeue();
  128. st1.dequeue();
  129. st1.dequeue();
  130. st1.dequeue();
  131. st1.dequeue();
  132. }
Advertisement
Add Comment
Please, Sign In to add comment