Advertisement
juyana

lab 20/03/17 2 way linked list insertion

Mar 20th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. class node
  6. {
  7. public:
  8. int info;
  9. node *forw,*backw;
  10. };
  11. node *first=NULL,*last,*temp;
  12. void creat_list(int data)
  13. {
  14. node *srt;
  15. srt=new node();
  16. srt->info=data;
  17. srt->forw=NULL;
  18. srt->backw=NULL;
  19. if(first==NULL)
  20. {
  21. first=srt;
  22. temp=srt;
  23. temp->backw=NULL;
  24. }
  25. else
  26. {
  27. temp->forw=srt;
  28. srt->backw=temp;
  29. srt->forw=NULL;
  30. temp=srt;
  31. }
  32. last=srt;
  33. }
  34. void insert_1st(int data)
  35. {
  36. node *srt;
  37. srt=new node();
  38. srt->info=data;
  39. srt->forw=first;
  40. first->backw=srt;
  41. first=srt;
  42.  
  43.  
  44. }
  45. void insert_last(int data)
  46. {
  47. node *srt;
  48. srt=new node();
  49. srt->info=data;
  50. last->forw=srt;
  51. srt->backw=last;
  52. last=srt;
  53.  
  54. }
  55. void insert_after(int item,int data)
  56. {
  57. node *ptr,*srt;
  58. ptr=new node();
  59. ptr->info=data;
  60. srt=first;
  61. while(srt!=last)
  62. {
  63. if(srt->info==item)
  64. {
  65. srt->forw->backw=ptr;
  66. ptr->backw=srt;
  67. ptr->forw=srt->forw;
  68. srt->forw=ptr;
  69. break;
  70.  
  71. }else{
  72. srt=srt->forw;
  73. }
  74. }
  75. if(last->info==item)
  76. {
  77. insert_last(data);
  78.  
  79. }
  80.  
  81. }
  82. void insert_before(int item,int data)
  83. {
  84. node *ptr,*srt;
  85. ptr=new node();
  86. ptr->info=data;
  87. srt=first;
  88. temp=srt->forw;
  89. if(first->info==item)
  90. {
  91. insert_1st(data);
  92.  
  93. }
  94. else{ while(srt!=last)
  95. {
  96. if(temp->info==item)
  97. {
  98. ptr->backw=srt;
  99. ptr->forw=temp;
  100. temp->backw=ptr;
  101. srt->forw=ptr;
  102. break;
  103. }else{
  104. srt=srt->forw;
  105. temp=srt->forw;
  106. }
  107. }
  108. }
  109.  
  110. }
  111. void forward_traverse()
  112. {
  113. node *srt;
  114. srt=first;
  115. while(srt!=last)
  116. {
  117. cout<<srt->info<<" ";
  118. srt=srt->forw;
  119. }
  120. cout<<srt->info<<endl;
  121.  
  122. }
  123. void backward_traverse()
  124. {
  125. node *srt;
  126. srt=last;
  127. while(srt!=first)
  128. {
  129. cout<<srt->info<<" ";
  130. srt=srt->backw;
  131. }
  132. cout<<srt->info<<endl;
  133.  
  134. }
  135. int main()
  136. {
  137. int n,data;
  138. cout<<"Enter the no of element"<<endl;
  139. cin>>n;
  140. for(int i=0; i<n; i++)
  141. {
  142. cin>>data;
  143. creat_list(data);
  144. }
  145. cout<<"after forward traversing"<<endl;
  146. forward_traverse();
  147. cout<<endl;
  148. cout<<"after backward traversing"<<endl;
  149. backward_traverse();
  150. cout<<endl;
  151. int x,y;
  152. cout<<"Enter the element"<<endl;
  153. cin>>x;
  154. insert_1st(x);
  155. cout<<"after inserting at first"<<endl;
  156. forward_traverse();
  157. cout<<endl;
  158. cout<<"Enter the element"<<endl;
  159. cin>>x;
  160. insert_last(x);
  161. cout<<"after inserting at last"<<endl;
  162. forward_traverse();
  163. cout<<endl;
  164. cout<<"Enter the position & element"<<endl;
  165. cin>>x>>y;
  166. insert_before(x,y);
  167. cout<<"after inserting "<<endl;
  168. forward_traverse();
  169. cout<<endl;
  170. cout<<"Enter the position & element"<<endl;
  171. cin>>x>>y;
  172. insert_after(x,y);
  173. cout<<"after inserting "<<endl;
  174. forward_traverse();
  175. cout<<endl;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement