fork download
  1. #include <limits.h>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. struct list { int data; list* next; };
  6.  
  7. list* cons(int n, list* l) { return new list({n,l}); }
  8.  
  9. struct List {
  10. list* begin;
  11. list* end;
  12. int empty() { return begin==end; }
  13. int pop_front() {
  14. if ( empty() ) {
  15. cout <<"List empty" <<endl;
  16. return INT_MIN;
  17. }
  18. int n = begin->data;
  19. begin = begin->next;
  20. return n;
  21. }
  22. void push_front(int n) {
  23. begin = cons(n,begin);
  24. }
  25. void push_back(int n) {
  26. list* newend = cons(0,NULL); // 새로운 end 를 만든다
  27. end->data = n;
  28. end->next = newend;
  29. end = newend;
  30. }
  31. };
  32.  
  33. struct Queue {
  34. List lis;
  35. int empty() { return lis.empty(); }
  36. void addq(int n) {
  37. return lis.push_back(n);
  38. }
  39. int deleteq() {
  40. return lis.pop_front();
  41. }
  42. };
  43.  
  44. void printList(List l) {
  45. for(list* p=l.begin; p!=l.end; p=p->next) {
  46. cout <<p->data <<" ";
  47. }
  48. cout <<endl;
  49. }
  50.  
  51.  
  52. int main(void) {
  53. list* l = cons(0,NULL);
  54.  
  55. List lis = {l, l}; // 빈 List
  56.  
  57. Queue q = { lis };
  58. q.addq(1);
  59. q.addq(2);
  60. q.addq(3);
  61. q.addq(4);
  62.  
  63. int n1 = q.deleteq();
  64. int n2 = q.deleteq();
  65. cout <<n1 <<", " <<n2 <<endl;
  66.  
  67. return 0;
  68. }
  69.  
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
1, 2