fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class linklist
  5. {
  6. struct Node
  7. {
  8. int data;
  9. Node*next;
  10.  
  11. Node(int data,Node*ptr)
  12. {
  13. this->data=data;
  14. next=ptr;
  15. }
  16. Node(int data)
  17. {
  18. this->data=data;
  19. next=0;
  20. }
  21. };
  22. Node*head=nullptr;
  23. Node*tail=nullptr;
  24. void insertfirst(int val)
  25. {
  26. Node*nn=new Node(val,head);
  27. head=nn;
  28. if(tail==0)tail=nn;
  29. }
  30. void insertlast(int val)
  31. {
  32. if(head==0)
  33. {
  34. insertfirst(val);
  35. }
  36. Node*nn=new Node(val);
  37. tail->next=nn;
  38. tail=nn;
  39. }
  40. int size=0;
  41. public:
  42. void insert(int val,int pos)
  43. {
  44. size++;
  45. if(pos==1){
  46. insertfirst(val);
  47. return;}
  48. else if(pos==size)
  49. {
  50. insertlast(val);
  51. return;
  52. }
  53. Node*prev=head;
  54. for(int i=0;i<pos-2;i++)
  55. {
  56. prev=prev->next;
  57. }
  58. Node*nn=new Node(val,prev->next);
  59. prev->next=nn;
  60. }
  61. void delvalue(int pos)
  62. {
  63. if(pos < 1 || pos > size)
  64. {
  65. cout << "Invalid position!" << endl;
  66. return;
  67. }
  68.  
  69. if(pos == 1)
  70. {
  71. Node* temp = head;
  72. head = head->next;
  73. if(head == nullptr)
  74. tail = nullptr;
  75. delete temp;
  76. }
  77. else
  78. {
  79. Node* prev = head;
  80.  
  81. for(int i = 1; i < pos - 1; i++)
  82. {
  83. prev = prev->next;
  84. }
  85.  
  86. Node* temp = prev->next;
  87. prev->next = temp->next;
  88.  
  89. if(temp == tail)
  90. tail = prev;
  91.  
  92. delete temp;
  93. }
  94. size--;
  95. }
  96. void display()
  97. {
  98. Node*ptr=head;
  99. while(ptr!=0)
  100. {
  101. cout<<ptr->data<<" ";
  102. ptr=ptr->next;
  103. }
  104. cout<<endl;
  105. }
  106. };
  107.  
  108. int main()
  109. {
  110. linklist l1,l2;
  111. l1.insert(100,1);
  112. l1.insert(200,1);
  113. l1.insert(300,2);
  114. l1.display();
  115. l1.delvalue(2);
  116. l1.display();
  117. return 0;
  118.  
  119. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
200 300 100 
200 100