online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
//Circular Doubly Linked List #include <stdio.h> #include <stdlib.h> typedef struct node { int info; struct node *next; struct node *prev; }NODE; void createlist(NODE *list); void display(NODE *list); void search(NODE *list); void insert(NODE *list, int num, int pos); void delpos(NODE *list, int pos); void delvalue(NODE *list, int num); void main() { int pos, num, n, no; NODE *list=(NODE*)malloc(sizeof(NODE)); list->next=list; createlist(list); display(list); printf("\n"); do { printf("\nOperation on Doubly Linked List:"); printf("\n1. Insert:"); printf("\n2. Display"); printf("\n3. Search"); printf("\n4. Delete by position"); printf("\n5. Delete by value"); printf("\n6. Exit\n"); printf("\n Enter your choice:"); scanf("%d", &no); switch(no) { case 1: printf(" Enter the node data:"); scanf("%d", &num); printf("Enter the node position to insert node:"); scanf("%d", &pos); insert(list, num, pos); display(list); printf("\n"); break; case 2: printf(">>Circular Doubly Linked List<<\n"); display(list); printf("\n"); break; case 3: search(list); display(list); printf("\n"); break; case 4: printf("Enter node position to be delete that node:"); scanf("%d", &pos); delpos(list, pos); display(list); printf("\n"); break; case 5: printf("Enter node data to be delete :"); scanf("%d", &num); delvalue(list, num); display(list); printf("\n"); break; case 6: printf("End\n"); break; default: printf("\n>>Enter Valid Choice<<\n"); } } while(no!=6); } void createlist(NODE *list) { int n, i; NODE *temp=list, *nn; printf("How Many Nodes you want to enter ?\n"); scanf("%d", &n); for(i=1; i<=n; i++) { nn=(NODE*)malloc(sizeof(NODE)); printf("\n Enter the node data:\t"); scanf("%d", &nn->info); nn->next=list; temp->next=nn; temp->prev=temp; list->prev=nn; temp=nn; } } void display(NODE *list) { NODE *temp; for(temp=list->next; temp!=list; temp=temp->next) { printf("%d", temp->info); printf("--->"); } } void search(NODE *list) { int num, flag=0; NODE *temp; printf("Enter Element to search:\t"); scanf("%d", &num); for(temp=list->next; temp!=list; temp=temp->next) { if(temp->info==num) { printf(">>%d is found<<\n", num); flag=1; exit; } } if(flag==0) printf(">>%d is not found<< \n", num); } void insert(NODE *list, int num, int pos) { NODE *nn, *temp=list, *temp1; int i; nn=(NODE*)malloc(sizeof(NODE)); nn->info=num; for(i=1, temp=list; temp->next!=list && i<pos; i++) temp=temp->next; if(i<pos) { printf("Position is out range\n"); return; } temp1=temp->next; nn->next=temp1; temp1->prev=nn; temp->next=nn; nn->prev=temp; } void delpos(NODE *list, int pos) { NODE *temp=list, *temp1, *temp2; int i; for(i=1,temp=list; temp->next!=list && i<pos; i++) temp=temp->next; if(i<pos || temp->next==list) { printf(">>Position is out of range<<\n"); return; } temp1=temp->next; temp2=temp1->next; temp->next=temp2; temp2->prev=temp; free (temp1); } void delvalue(NODE *list, int num) { NODE *temp=list, *temp1, *temp2; if(list->info==num) { list=list->next; free (temp); return; exit; } for(temp=list; temp->next!=list; temp=temp->next) { if(temp->next->info==num) { temp1=temp->next; if(temp1->next==NULL) { temp->next=NULL; free (temp); return; exit; } else { temp2=temp1->next; temp->next=temp2; temp2->prev=temp; free (temp1); return; exit; } } } printf(">>Enter valid data<<\n"); return; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue