Advertisement
Mukit1234

tttt

Dec 9th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. struct Node
  4. {
  5. int data;
  6. struct Node *prev, *next;
  7. }*head,*last;
  8.  
  9. int main()
  10. {
  11. int n;
  12. printf("Enter the number of Nodes: ");
  13. scanf("%d",&n);
  14. createList(n);
  15. printf("Data from First to Last:\n");
  16. displayAccending();
  17. printf("Data from Last to First:\n");
  18. displaydecending();
  19. insert();
  20. printf("Data from First to Last:\n");
  21. displayAccending();
  22. printf("Data from Last to First:\n");
  23. displaydecending();
  24. deletenode();
  25. printf("Data from First to Last:\n");
  26. displayAccending();
  27. printf("Data from Last to First:\n");
  28. displaydecending();
  29. }
  30. void createList(int n)
  31. {
  32. struct Node *temp;
  33. head=NULL;
  34. last=NULL;
  35. int data, i;
  36. printf("Input data for Node 1: ");
  37. scanf("%d",&data);
  38. head=(struct Node*)malloc(sizeof(struct Node));
  39. head->data=data;
  40. head->prev=NULL;
  41. head->next=NULL;
  42. last=head;
  43. for(i=2; i<=n; i++)
  44. {
  45. printf("input data for Node %d: ",i);
  46. scanf("%d",&data);
  47. temp=(struct Node*)malloc(sizeof(struct Node));
  48. temp->data=data;
  49. temp->prev=last;
  50. temp->next=NULL;
  51. last->next=temp;
  52. last=last->next;
  53. }
  54. }
  55. void displayAccending()
  56. {
  57. struct Node *temp;
  58. temp=head;
  59. while(temp!=NULL)
  60. {
  61. printf("%d\n",temp->data);
  62. temp=temp->next;
  63. }
  64. }
  65. void displaydecending()
  66. {
  67. struct Node *temp;
  68. temp=last;
  69. while(temp!=NULL)
  70. {
  71. printf("%d\n",temp->data);
  72. temp=temp->prev;
  73. }
  74. }
  75. void insert()
  76. {
  77.  
  78. struct Node *newnode,*temp1=head,*temp2;
  79. int pos,data,i;
  80. printf("Enter the position to insert a Node: ");
  81. scanf("%d",&pos);
  82. printf("Input data for insert: ");
  83. scanf("%d",&data);
  84. for(i=1; i<pos-1; i++)
  85. {
  86. temp1=temp1->next;
  87. }
  88.  
  89.  
  90. if(temp1==last)
  91. {
  92. newnode=(struct Node*)malloc(sizeof(struct Node));
  93. newnode->data=data;
  94. newnode->prev=last;
  95. newnode->next=NULL;
  96. last->next=newnode;
  97. last=newnode;
  98. }
  99. else
  100. {
  101. if(pos==1)
  102. {
  103. newnode=(struct Node*)malloc(sizeof(struct Node));
  104. newnode->data=data;
  105. newnode->next=head;
  106. newnode->prev=NULL;
  107. head->prev=newnode;
  108. head=newnode;
  109. }
  110. else
  111. {
  112.  
  113. newnode=(struct Node*)malloc(sizeof(struct Node));
  114. newnode->data=data;
  115. temp2=temp1->next;
  116. newnode->prev=temp1;
  117. temp1->next=newnode;
  118. temp2->prev=newnode;
  119. newnode->next=temp2;
  120. }
  121. }
  122. }
  123. void deletenode()
  124. {
  125. struct Node *temp1,*temp2;
  126. int pos,i;
  127. temp1=head;
  128. printf("Enter the position to delete: ");
  129. scanf("%d",&pos);
  130. for(i=1;i<pos;i++)
  131. {
  132. temp1=temp1->next;
  133. }
  134. if (pos==1)
  135. {
  136. head=temp1->next;
  137. temp1->next->prev=temp1->prev;
  138. free(temp1);
  139. return;
  140. }
  141. if(temp1==last)
  142. {
  143. temp1=last;
  144. last=last->prev;
  145. last->next=NULL;
  146. free(temp1);
  147. }
  148. else
  149. {
  150. temp1->prev->next=temp1->next;
  151. temp1->next->prev=temp1->prev;
  152. free(temp1);
  153. }
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement