Maruf_Hasan

linked list

Apr 15th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.69 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. struct node
  6. {
  7. int info;
  8. node *link;
  9. };
  10. node *root=NULL;
  11. void create(int num)
  12. {
  13. if(root==NULL)
  14. {
  15. root=new node();
  16. root->info=num;
  17. root->link=NULL;
  18. }
  19. else
  20. {
  21. node *srt=root;
  22. while(srt->link!=NULL)
  23. {
  24. srt=srt->link;
  25. }
  26. node *ptr;
  27. ptr=new node();
  28. ptr->info=num;
  29. ptr->link=NULL;
  30. srt->link=ptr;
  31. }
  32. }
  33.  
  34. void traverse()
  35. {
  36. node *srt;
  37. srt=root;
  38. while(srt->link!=NULL)
  39. {
  40. cout<<srt->info<<endl;
  41. srt=srt->link;
  42. }
  43. cout<<srt->info<<endl;
  44. }
  45. void first_insert()
  46. {
  47. int item;
  48. cout<<"Enter "<<endl;
  49. cin>>item;
  50. node *ptr;
  51. ptr=new node();
  52. ptr->info=item;
  53. ptr->link=root;
  54. root=ptr;
  55. }
  56. void last_insert()
  57. {
  58. cout<<"Enter"<<endl;
  59. node *ptr,*srt;
  60. int item;
  61. cin>>item;
  62. ptr=new node();
  63. ptr->info=item;
  64. ptr->link=NULL;
  65. for(srt=root; ; )
  66. {
  67. if(srt->link==NULL)
  68. {
  69. srt->link=ptr;
  70. break;
  71. }
  72. else
  73. {
  74. srt=srt->link;
  75. }
  76. }
  77. }
  78.  
  79. void insert_before()
  80. {
  81. cout<<"Enter"<<endl;
  82. int item,num;
  83. cin>>item;
  84. cin>>num;
  85. node *srt,*temp;
  86. for(srt=root; ;)
  87. {
  88. if(srt->info==item)
  89. {
  90. if(srt==root)
  91. {
  92. first_insert();
  93. break;
  94. }
  95. else
  96. {
  97. node *ptr=new node();
  98. ptr->info=num;
  99. ptr->link=srt;
  100. temp->link=ptr;
  101. break;
  102. }
  103. }
  104. else
  105. {
  106. //srt=srt->link;
  107. temp=srt;
  108. srt=srt->link;
  109. }
  110. }
  111. }
  112.  
  113. void insert_after()
  114. {
  115. int item,num;
  116. cin>>item>>num;
  117. node *srt,*temp;
  118. for(srt==root; ;)
  119. {
  120. if(srt->info==item)
  121. {
  122. if(srt->link==NULL)
  123. {
  124. last_insert();
  125. break;
  126. }
  127. else
  128. {
  129. node *ptr;
  130. ptr=new node();
  131. ptr->info=num;
  132. ptr->link=srt->link;
  133. srt->link=ptr;
  134. break;
  135. }
  136. }
  137. else
  138. {
  139. srt=srt->link;
  140. temp=srt;
  141. }
  142. }
  143. }
  144.  
  145. void first_delete()
  146. {
  147. node *srt=root;
  148. root=srt->link;
  149. }
  150. void last_delete()
  151. {
  152. node *srt,*temp;
  153. for(srt=root; ; )
  154. {
  155. if(srt->link==NULL)
  156. {
  157. temp->link=NULL;
  158. break;
  159. }
  160. else
  161. {
  162. temp=srt;
  163. srt=srt->link;
  164. }
  165. }
  166. }
  167.  
  168. void delete_given()
  169. {
  170. int item;
  171. cin>>item;
  172. node *srt,*ptr,*temp;
  173. for(srt=root; ; )
  174. {
  175. if(srt->info==item)
  176. {
  177. if(srt==root)
  178. {
  179. first_delete();
  180. }
  181. else if(srt->link==NULL)
  182. {
  183. last_delete();
  184. }
  185. else
  186. {
  187. temp->link=srt->link;
  188. break;
  189. }
  190. }
  191. else
  192. {
  193. temp=srt;
  194. srt=srt->link;
  195. //ptr=srt;
  196. }
  197. }
  198. }
  199. void delete_after()
  200. {
  201. int item;
  202. cin>>item;
  203. node *srt,*temp;
  204. for(srt=root; ;)
  205. {
  206. if(srt->info==item)
  207. {
  208. temp=srt->link;
  209. if(temp->link==NULL)
  210. {
  211. last_delete();
  212. break;
  213. }
  214. else
  215. {
  216. srt->link=temp->link;
  217. break;
  218. }
  219.  
  220. }
  221. else
  222. {
  223. srt=srt->link;
  224. }
  225. }
  226. }
  227.  
  228. void delete_before()
  229. {
  230. int item;
  231. cin>>item;
  232. node *srt,*temp=NULL,*ptr=NULL;
  233. for(srt=root; ; )
  234. {
  235. if(srt->info==item)
  236. {
  237. if(temp==root)
  238. {
  239. first_delete();
  240. }
  241. else
  242. {
  243. temp->link=srt;
  244. break;
  245. }
  246. }
  247. else
  248. {
  249. temp=srt;
  250. srt=srt->link;
  251. }
  252. }
  253. }
  254. int main()
  255. {
  256. int n;
  257. cin>>n;
  258. int a[n+5];
  259. for(int i=0;i<n;i++)
  260. {
  261. cin>>a[i];
  262. create(a[i]);
  263. }
  264. //first_insert();
  265. traverse();
  266. //last_insert();
  267. //insert_before ();
  268. //insert_after();
  269. //first_delete();
  270. //last_delete();
  271. // delete_given();
  272. //delete_after();
  273. // delete_before();
  274. traverse();
  275.  
  276. return 0;
  277. }
Advertisement
Add Comment
Please, Sign In to add comment