Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- struct linkedList
- {
- int data;
- struct linkedList *next;
- struct linkedList *prev;
- };
- typedef struct linkedList *node;
- node createnode()
- {
- node temp;
- temp= (node)malloc(sizeof (struct linkedList));
- temp->next=NULL;
- temp->prev=NULL;
- return temp;
- }
- void print_node(node head)
- {
- node p;
- p=head;
- while(p!=NULL)
- {
- printf("%d ", p->data);
- p=p->next;
- }
- printf("\n");
- }
- node add_node_front(node head, int data)
- {
- node temp=createnode();
- temp->data=data;
- if(head==NULL)
- {
- head=temp;
- return head;
- }
- temp->prev=NULL;
- temp->next=head;
- head->prev=temp;
- head=temp;
- return head;
- }
- node add_node(node head,int value)
- {
- node temp=createnode(),p;
- temp->data=value;
- if(head==NULL)
- {
- head=temp;
- return head;
- }
- p=head;
- while(p->next!=NULL)
- {
- p=p->next;
- }
- p->next=temp;
- temp->prev=p;
- return head;
- }
- node print_node_rev(node head)
- {
- node p;
- if(head==NULL)
- printf("empty\n");
- else
- {
- p=head;
- while(p->next!=NULL)
- {
- p=p->next;
- }
- while(p->prev!=NULL)
- {
- printf("%d ",p->data);
- p=p->prev;
- }
- printf("%d ",p->data);
- printf("\n");
- }
- }
- node update_node(int value1,int value2,node head)
- {
- node p;
- p=head;
- while(p->data!=value1)
- p=p->next;
- if(p==NULL)
- printf("%d is not in the list\n",value1);
- else
- p->data=value2;
- return head;
- }
- void delete_node(node head, int value)
- {
- node p, n;
- if(head->data==NULL)
- {
- printf(" No element in List\n");
- return;
- }
- while(head->data!=value)
- head=head->next;
- if( head->prev!=NULL && head->next!=NULL )
- {
- p=head->prev;
- n=head->next;
- p->next=n;
- n->prev=p;
- }
- else if(head->prev==NULL && head->next!=NULL )
- {
- n=head->next;
- n->prev=NULL;
- }
- else if(head->prev!=NULL && head->next==NULL )
- {
- p=head->prev;
- p->next=NULL;
- }
- else if (head->prev==NULL && head->next==NULL)
- head->data=NULL;
- return;
- }
- node insert_node(node head,int value1,int value2)
- {
- node p=createnode(),q;
- p->data=value2;
- q=head;
- while(q->data!=value1)
- q=q->next;
- if(q==NULL)
- printf("%d is not in the list\n",value1);
- else
- {
- p->next=q->next;
- q->next=p;
- }
- return head;
- }
- node insert_node_front(node head,int value1,int value2)
- {
- node p=createnode(),q;
- p->data=value2;
- q=head;
- while(q->data!=value1)
- q=q->next;
- p->prev = q->prev;
- p->next = q;
- q->prev = p;
- if(p->prev!=NULL)
- {
- p->prev->next = p;
- }
- else
- {
- head = p;
- }
- return head;
- }
- int main()
- {
- int n,data;
- node head=NULL;
- printf("1. add node at back\n2. add node at front\n3. print\n4. print reverse\n5. update node\n6. delete node\n7. insert a node (back)\n8. insert a node (front)\n0. exit\n");
- while(1)
- {
- scanf("%d",&n);
- if(n==2)
- {
- printf("new data : ");
- scanf("%d", &data);
- head=add_node_front(head,data);
- }
- else if(n==1)
- {
- printf("new data : ");
- scanf("%d", &data);
- head=add_node(head,data);
- }
- else if(n==3)
- {
- print_node(head);
- }
- else if(n==4)
- {
- print_node_rev(head);
- }
- else if(n==5)
- {
- int x,y;
- scanf("%d %d",&x,&y);
- update_node(x,y,head);
- }
- else if(n==6)
- {
- int x;
- scanf("%d",&x);
- delete_node(head,x);
- }
- else if(n==7)
- {
- int x,y;
- scanf("%d %d",&x,&y);
- head=insert_node(head,x,y);
- }
- else if(n==8)
- {
- int a,b;
- scanf("%d %d",&a,&b);
- head=insert_node_front(head,a,b);
- }
- else if(n==0)
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment