Advertisement
Adrita

doubly linked list

Mar 17th, 2020
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node
  4. {
  5. int data;
  6. struct node *next;
  7. struct node *prev;
  8. };
  9. typedef struct node Node;
  10. Node* create_node(int item, Node *next,Node*prev)
  11. {
  12. Node* new_node=new Node();
  13. if(new_node==NULL)
  14. cout<<"Error"<<endl;
  15. else
  16. {
  17. new_node->data=item;
  18. new_node->next=next;
  19. new_node->prev=prev;
  20. }
  21. return new_node;
  22.  
  23. }
  24. Node* prepend(int item,Node* head)
  25. {
  26. Node* new_node=create_node(item,head,NULL);
  27. return new_node;
  28. }
  29. Node* append(int item,Node *head)
  30. {
  31. Node *new_node=create_node(item,NULL,NULL);
  32. if(head==NULL)
  33. return new_node;
  34. else
  35. {
  36. Node* current=new Node();
  37. current=head;
  38. while(current->next!=NULL)
  39. current=current->next;
  40. current->next=new_node;
  41. new_node->prev=current;
  42. }
  43. return head;
  44. }
  45. Node* insertn(int item,Node* head,int key)
  46. {
  47. Node* new_node=create_node(item,NULL,NULL);
  48. if(head==NULL)
  49. cout<<"Error"<<endl;
  50. else
  51. {
  52. Node *current=new Node();
  53. current=head;
  54. while(current!=NULL&&current->data!=key)
  55. current=current->next;
  56. if(current!=NULL)
  57. {
  58. new_node->next=current->next;
  59. current->next=new_node;
  60. new_node->prev=current;
  61. }
  62. else
  63. cout<<"Value not found"<<endl;
  64. }
  65. return head;
  66. }
  67. void display(Node *head)
  68. {
  69. cout<<"Linked list:"<<endl;
  70. while(head!=NULL)
  71. {
  72. cout<<head->data<<" ";
  73. head=head->next;
  74. }
  75. cout<<endl;
  76. }
  77. void display_rev(Node* head)
  78. {
  79. Node* temp=new Node();
  80. temp=head;
  81. if(temp==NULL)
  82. return;
  83. cout<<"reversed:"<<endl;
  84. while(temp->next!=NULL)
  85. temp=temp->next;
  86. while(temp!=NULL)
  87. {
  88. cout<<temp->data<<" ";
  89. temp=temp->prev;
  90. }
  91.  
  92. }
  93. int main()
  94. {
  95. Node* head=NULL;
  96. head=prepend(10,head);
  97. head=insertn(20,head,10);
  98. head=insertn(30,head,20);
  99. head=insertn(40,head,30);
  100. head=insertn(50,head,40);
  101. head=insertn(60,head,50);
  102. head=insertn(70,head,60);
  103. display(head);
  104. display_rev(head);
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement