My Profile
Active Members
TodayLast 7 Days
more...
Awards & Gifts
Online Exams
Fresher Jobs
Our fresher job section is exclusively for fresh graduates! Find jobs for freshers in major Indian
cities including Bangalore, Chennai, Hyderabad, Pune or Kochi
Resources
Find educational articles, blogs, discussion threads and other resources.
Colleges
Find details about any college in India or search for courses.
|
C program to perform operation on Double Link List
Posted Date:
Total Responses: 0
Posted By: pankaj agarwala Member Level: Gold Points/Cash: 7
|
C program to INSERT node after and before a given node,insert by position,DELETE by position and Value on Double Link List.
#include #include #include struct node { int no; struct node *pre,*next; }; struct node *start=NULL,*last=NULL;
void Append() {
struct node *n; n=(struct node*)malloc(sizeof(struct node)); printf("\nEnter no"); scanf("%d",&n->no); n->next=NULL; if(start==NULL) { start=last=n; start->pre=NULL; return; } last->next=n; n->pre=last; last=n; }
void ftraverse() { struct node *p=start; if(start==NULL) { printf("\n Empty Link List"); return; } while(p!=NULL) { printf(" %d",p->no); p=p->next; } }
void insertafter() { int val; struct node *p =start,*n; if(start==NULL) { printf("\nEmpty LINK lIST"); return; }
printf("\n Enter number after which you want to INSERT"); scanf("%d",&val); if(val==last->no) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); last->next=n; n->pre=last; last=n; last->next=NULL; printf("\n NODE INSErted"); return; } while(p->next!=NULL) { if(val==p->no) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); n->next=p->next; n->pre=p; p->next=n; n->next->pre=n;
printf("\n NODE INSErted"); return; } p=p->next; } printf("\n%d NOT found",val); }
void insertbefore() { int val; struct node *p =start,*n; if(start==NULL) { printf("\nEmpty LINK lIST"); return; }
printf("\n Enter number BEFORE which you want to INSERT"); scanf("%d",&val); if(val==start->no) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); start->pre=n; n->next=last; start=n; start->pre=NULL; printf("\n NODE INSErted"); return; } while(p!=NULL) { if(val==p->no) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); n->pre=p->pre; n->next=p; p->pre=n; n->pre->next=n;
printf("\n NODE INSErted"); return; } p=p->next; } printf("\n%d NOT found",val); }
void insertbypos() { int val; struct node *p =start,*n; int non=0,i,pos; if(start==NULL) { printf("\nEmpty LINK lIST"); return; }
printf("\nEnter the position"); scanf("%d",&pos); while(p!=NULL) { non++; p=p->next; }
if (pos<1&&pos>non+1) { printf("\n INvalid POSition"); } if(pos==1) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); start->pre=n; n->next=start; start=n; start->pre=NULL; printf("\n NODE INSErted"); return; }
if(pos==non+1) { n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); last->next=n; n->pre=last; last=n; last->next=NULL; printf("\n NODE INSErted"); return; } p=start; for(i=1;i { p=p->next; } n=(struct node*)malloc(sizeof(struct node)); printf("\nENTER number"); scanf("%d",&n->no); n->next=p->next; n->pre=p; p->next=n; n->next->pre=n; printf("\n NODE INSErted"); return; }
void delByValue() {
int val; struct node *p =start; int i,pos; if(start==NULL) { printf("\nEmpty LINK lIST"); return; }
printf("\nEnter the number to be deleted"); scanf("%d",&val); if(start==last&&val==start->no) { free(p); start=last=NULL; printf("\nNODE DEleted"); return; } else if (val==start->no) { start=start->next; start->pre=NULL; free(p); printf("\nNOde DELeted"); return; } else if(val==last->no) { p=last; last=last->pre; last->next=NULL; free(p); printf("\nNOde DELeted"); return;
} while(p->next!=NULL) { if(val==p->no) { p->pre->next=p->next; p->next->pre=p->pre;
free(p); printf("\nNOde DELeted"); } p=p->next; } printf("\n NODE NOt FOUnd") ;
}
void delByPos() {
struct node *p =start; int non=0,i,pos; if(start==NULL) { printf("\nEmpty LINK lIST"); return; }
printf("\nEnter the POSITION which is to be deleted"); scanf("%d",&pos); while(p!=NULL) { non++; p=p->next; } p=start; if(pos<1||pos>non); { printf("\n INvalid Position"); }
if(start==last&&pos==1) { free(p); start=last=NULL; printf("\nNODE DEleted"); return; } else if (pos==1) { start=start->next; start->pre=NULL; free(p); printf("\nNOde DELeted"); return; } else if(pos==non) { p=last; last=last->pre; last->next=NULL; free(p); printf("\nNOde DELeted"); return;
} for(i=0;i { p=p->next; } p->pre->next=p->next; p->next->pre=p->pre;
free(p); printf("\nNOde DELeted"); }
void main() { int ch; clrscr(); do { printf("\n\n\n 1 Append"); printf("\n 2 Forward TRAverse"); printf("\n 3 INsert after the given number");
printf("\n 4 INsert before the given number"); printf("\n 5 INsert BY POsition "); printf("\n 6 DElerte By VAlue "); printf("\n 7 DElete by POSITION");
printf("\n 0 EXIT"); printf("\n Enter your choice"); scanf("%d",&ch); switch(ch) { case 1:Append(); break; case 2:ftraverse(); break;
case 3: insertafter(); break; case 4: insertbefore(); break; case 5:insertbypos(); break; case 6:delByValue(); break; case 7: delByPos(); break; case 0: break;
default: printf("\n Invalid Choice"); } }while(ch!=0); getch(); }
AttachmentsDoubleLinkList (2532-291535-DDL1.CPP)
|
Project Feedbacks
|
No feedbacks found. Be the first to respond and make money from revenue sharing program.
|
|
|
| Post Feedback |
|
|
You must Sign In to post a feedback.
|
|
|
|
|
Advertise Here
|