Write a program to Implement a Linked List in C++

The user is provided with the following options..



To insert an item at begining

To insert an item at end

To insert an item at position

To traverse the list

To delete first item

To delete last item

To delete item from position

To count no. of items in list





Select To use this code as it is.. select and copy paste this code into code.cpp file :)
  1. #include<conio.h>

  2. #include<stdio.h>

  3. #include<alloc.h>

  4. #include<process.h>

  5. struct node

  6. { int info;

  7. struct node *next;

  8. };


  9. typedef struct node sn;


  10. void insertatbeg(sn **,int);

  11. void insertatend(sn **,int);

  12. void insertatpos(sn **,int,int);

  13. void traverse(sn *);

  14. int delfirst(sn *);

  15. int dellast(sn *);

  16. int delpos(sn *,int);

  17. int count(sn *);

  18. //Coding by: Snehil Khanor

  19. //http://WapCPP.blogspot.com

  20. void main()

  21. { sn *p;

  22. int n,i,l;

  23. char ch;

  24. clrscr();

  25. p=NULL;

  26. do

  27. { printf("\n-----select an operation-----");

  28. printf("\n1->To insert an item at begining<-");

  29. printf("\n2->To insert an item at end<-");

  30. printf("\n3->To insert an item at position<-");

  31. printf("\n4->To traverse the list<-");

  32. printf("\n5->To delete first item<-");

  33. printf("\n6->To delete last item<-");

  34. printf("\n7->To delete item from position<-");

  35. printf("\n8->To count no. of items in list<-");

  36. printf("\n9->Exit<-");

  37. printf("\n->Enter your choice:");

  38. scanf("%d",&n);

  39. switch(n)

  40. { case 1:printf("\n->Enter the item to insert");

  41. scanf("%d",&i);

  42. insertatbeg(&p,i);

  43. break;

  44. case 2:printf("\n->Enter the item to insert");

  45. scanf("%d",&i);

  46. insertatend(&p,i);

  47. break;

  48. case 3:printf("\n->Enter the item to insert");

  49. scanf("%d",&i);

  50. printf("\n->Enter the position");

  51. scanf("%d",&l);

  52. insertatpos(&p,i,l);

  53. break;

  54. case 4:traverse(p);

  55. break;

  56. case 5:i=delfirst(p);

  57. printf("\nItem deleted is %d.",i);

  58. break;

  59. case 6:i=dellast(p);

  60. printf("\nItem deleted is %d.",i);

  61. break;

  62. case 7:printf("\n->Enter the position");

  63. scanf("%d",&l);

  64. i=delpos(p,l);

  65. printf("\nItem deleted is %d.",i);

  66. break;

  67. case 8:i=count(p);

  68. printf("\nNumber of nodes in list are %d.",i);

  69. break;

  70. case 9:exit(0);

  71. break;

  72. default:printf("\n->You have entered wrong choice");

  73. }

  74. printf("\n->Do you want to continue/exit(y/n)");

  75. fflush(stdin);

  76. scanf("%c",&ch);

  77. } while((ch=='y')||(ch=='Y'));

  78. getch();

  79. }


  80. int count(sn *p)

  81. { sn *temp;

  82. int c=1;

  83. temp=p;

  84. while((temp->next)!=NULL)

  85. { c++;

  86. temp=temp->next;

  87. }

  88. return c;

  89. }


  90. void insertatbeg(sn **p,int item)

  91. { sn *ptr;

  92. ptr=(sn *)malloc(sizeof(sn));

  93. ptr->info=item;

  94. if(*p==NULL)

  95. ptr->next=NULL;

  96. else

  97. ptr->next=*p;

  98. *p=ptr;

  99. }


  100. void insertatend(sn **p,int item)

  101. { sn *ptr,*temp;

  102. ptr=(sn *)malloc(sizeof(sn));

  103. ptr->info=item;

  104. ptr->next=NULL;

  105. if(*p==NULL)

  106. *p=ptr;

  107. else

  108. { temp=*p;

  109. while((temp->next)!=NULL)

  110. temp=temp->next;

  111. temp->next=ptr;

  112. }

  113. }


  114. void insertatpos(sn **p,int item,int loc)

  115. { sn *ptr,*temp,*s;

  116. int i,c;

  117. temp=*p;

  118. ptr=(sn *)malloc(sizeof(sn));

  119. ptr->info=item;

  120. c=count(*p);

  121. if(loc>c)

  122. printf("\nList is short,Item can't inserted");

  123. else

  124. {

  125. for(i=0;i<loc-1;i++)

  126. { s=temp;

  127. temp=temp->next;

  128. }

  129. ptr->next=s->next;

  130. s->next=ptr;

  131. }

  132. }


  133. //Coding by: Snehil Khanor

  134. //http://WapCPP.blogspot.com

  135. void traverse(sn *p)

  136. { sn *temp;

  137. if(p==NULL)

  138. printf("\nList is empty.");

  139. else

  140. {

  141. temp=p;

  142. while((temp->next)!=NULL)

  143. { printf("\nno.=%d",temp->info);

  144. temp=temp->next;

  145. }

  146. printf("\nno.=%d",temp->info);

  147. }

  148. }


  149. int delfirst(sn *p)

  150. { int item;

  151. sn *temp;

  152. if(p==NULL)

  153. { printf("\nList is empty");

  154. return 0;

  155. }

  156. else

  157. { temp=p;

  158. p=p->next;

  159. item=temp->info;

  160. free(temp);

  161. return item;

  162. }

  163. }


  164. int dellast(sn *p)

  165. { int item;

  166. sn *temp,*s;

  167. if(p==NULL)

  168. { printf("\nList is empty");

  169. return 0;

  170. }

  171. else

  172. { temp=p;

  173. while((temp->next)!=NULL)

  174. { s=temp;

  175. temp=temp->next;

  176. }

  177. item=temp->info;

  178. s->next=NULL;

  179. free(temp);

  180. return item;

  181. }

  182. }


  183. int delpos(sn *p,int loc)

  184. { int item,i,c;

  185. sn *temp,*s;

  186. c=count(p);

  187. if(p==NULL)

  188. { printf("\nList is empty");

  189. return 0;

  190. }

  191. else

  192. { if(loc>c)

  193. { printf("\nItem is not in list.");

  194. return 0;

  195. }

  196. else

  197. { temp=p;

  198. for(i=0;i<loc-1;i++)

  199. { s=temp;

  200. temp=temp->next;

  201. }

  202. item=temp->info;

  203. s->next=temp->next;

  204. free(temp);

  205. return item;

  206. }

  207. }

  208. }


Check out this stream