fork download
  1. #include <bits/stdc++.h>
  2. #define FastIo ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  3. #define ll long long
  4. #define f0(n) for(int i = 0 ; i<n ; i++)
  5. #define f(n) for(int i = 1 ; i<=n ; i++)
  6.  
  7. using namespace std;
  8.  
  9. class Node {
  10. public :
  11. ll val;
  12. Node * next ;
  13. Node (ll val) : val(val),next(nullptr) {}
  14. };
  15.  
  16. class linkList {
  17. private :
  18. Node * head ;
  19. Node * tail ;
  20.  
  21. public :
  22. linkList () {
  23. head = tail = nullptr ;
  24. }
  25. void push_back(ll val) {
  26. Node * newNode = new Node (val);
  27. if(head == nullptr) {
  28. head = tail = newNode ;
  29. }
  30. else {
  31. tail -> next = newNode;
  32. tail = newNode ;
  33. }
  34. }
  35. void push_front (ll val) {
  36. Node * newNode = new Node (val);
  37. if (head == nullptr) {
  38. head = tail = newNode ;
  39. }
  40. else {
  41. newNode->next = head;
  42. head = newNode ;
  43. }
  44. }
  45. void print() {
  46. Node * temp = head;
  47. while(temp != nullptr) {
  48. cout << temp->val << " ";
  49. temp = temp->next;
  50. }
  51. }
  52. void pop_at(int idx) {
  53. if(idx == 0){
  54. Node * delNode = head;
  55. head=head->next;
  56. delete(delNode);
  57. return;
  58. }
  59. Node * temp = head;
  60. for(int i = 1 ; i<idx ; i++){
  61. // cout << "\nthe index is =" <<i;
  62. temp = temp->next;
  63. }
  64. // cout << "\n";
  65. Node * delNode = temp->next;
  66. temp->next = temp->next->next;
  67. delete(delNode);
  68. }
  69.  
  70. int size(){
  71. int count=0;
  72. Node * temp = head;
  73. while(temp!=nullptr){
  74. count++;
  75. temp = temp->next ;
  76. }
  77. return count;
  78. }
  79.  
  80.  
  81.  
  82. };
  83. int main () {
  84. FastIo;
  85. linkList li;
  86. int t;
  87. cin >> t;
  88. while(t--){
  89. int X,V,cnt = 0;
  90. cin >> X >> V ;
  91. if(X==0) {
  92. li.push_front(V);
  93. li.print();
  94. cout <<"\n";
  95. }
  96. else if(X==1){
  97. li.push_back(V);
  98. li.print();
  99. cout <<"\n";
  100. }
  101. else if (X==2) {
  102. int sz = li.size();
  103. if (sz > V) {
  104. li.pop_at(V);
  105. li.print();
  106. cout <<"\n";
  107. }
  108. else {
  109. li.print();
  110. cout << "\n";
  111. }
  112. }
  113. }
  114.  
  115. return 0 ;
  116. }
  117.  
Success #stdin #stdout 0.01s 5324KB
stdin
10
1 4
2 1
0 9
0 10
2 2
1 5
2 0
2 1
2 5
2 2
stdout
4 
4 
9 4 
10 9 4 
10 9 
10 9 
9 
9 
9 
9