Professional Documents
Culture Documents
Link List C++
Link List C++
h>
#include<conio.h>
#include<alloc.h>
struct node
int no;
};
void Append()
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()
if(start==NULL)
{
printf("\n Empty Link List");
return;
while(p!=NULL)
printf(" %d",p->no);
p=p->next;
void insertafter()
int val;
if(start==NULL)
return;
scanf("%d",&val);
if(val==last->no)
printf("\nENTER number");
scanf("%d",&n->no);
last->next=n;
n->pre=last;
last=n;
last->next=NULL;
return;
}
while(p->next!=NULL)
if(val==p->no)
printf("\nENTER number");
scanf("%d",&n->no);
n->next=p->next;
n->pre=p;
p->next=n;
n->next->pre=n;
return;
p=p->next;
void insertbefore()
int val;
if(start==NULL)
return;
scanf("%d",&val);
if(val==start->no)
{
printf("\nENTER number");
scanf("%d",&n->no);
start->pre=n;
n->next=last;
start=n;
start->pre=NULL;
return;
while(p!=NULL)
if(val==p->no)
printf("\nENTER number");
scanf("%d",&n->no);
n->pre=p->pre;
n->next=p;
p->pre=n;
n->pre->next=n;
return;
p=p->next;
void insertbypos()
{
int val;
int non=0,i,pos;
if(start==NULL)
return;
scanf("%d",&pos);
while(p!=NULL)
non++;
p=p->next;
if (pos<1&&pos>non+1)
if(pos==1)
printf("\nENTER number");
scanf("%d",&n->no);
start->pre=n;
n->next=start;
start=n;
start->pre=NULL;
return;
}
if(pos==non+1)
printf("\nENTER number");
scanf("%d",&n->no);
last->next=n;
n->pre=last;
last=n;
last->next=NULL;
return;
p=start;
for(i=1;i<pos-1;i++)
p=p->next;
printf("\nENTER number");
scanf("%d",&n->no);
n->next=p->next;
n->pre=p;
p->next=n;
n->next->pre=n;
return;
void delByValue()
int val;
struct node *p =start;
int i,pos;
if(start==NULL)
return;
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;
void delByPos()
int non=0,i,pos;
if(start==NULL)
return;
scanf("%d",&pos);
while(p!=NULL)
non++;
p=p->next;
}
p=start;
if(pos<1||pos>non);
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<pos-1;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 0 EXIT");
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;
}while(ch!=0);
getch();