You are on page 1of 9

DOUBLYLI

NKEDLI
ST

#i
ncl
ude<st
dio.
h>
#i
ncl
ude<st
dli
b.h>
st
ructnode
{
st
ructnode*
prev
;
st
ructnode*
next
;
i
ntdat
a;
}
;
st
ructnode*
head;
v
oidi
nser
ti
on_
begi
nni
ng(
);
v
oidi
nser
ti
on_
last
();
v
oidi
nser
ti
on_
speci
fi
ed(
);
v
oiddel
eti
on_
begi
nni
ng(
);
v
oiddel
eti
on_
last
();
v
oiddel
eti
on_
speci
fi
ed(
);
v
oiddi
spl
ay(
);
v
oidsear
ch(
);
v
oidmai
n()
{
i
ntchoi
ce=0;
whi
l
e(choi
ce!
=9)
{
pr
int
f("
\n*
***
***
**Mai
nMenu*
***
***
**\
n")
;
pr
int
f("
\nChooseoneopt
ionf
rom t
hef
oll
owi
ngl
i
st.
..
\n"
);
pr
int
f("
\n===============================================\
n")
;
pr
int
f("
\n1.
Inser
tinbegi
ning\
n2.
Inser
tatl
ast
\n3.
Inser
tatanyr
andom
l
ocat
ion\
n4.
Del
etef
rom Begi
nni
ng\
n
5.
Del
etef
rom l
ast
\n6.
Del
etet
henodeaf
tert
hegi
ven
dat
a\n7.
Sear
ch\
n8.
Show\
n9.
Exi
t\
n")
;
pr
int
f("
\nEnt
ery
ourchoi
ce?
\n"
);
scanf
("\
n%d"
,&choi
ce)
;
swi
tch(
choi
ce)
{
case1:
i
nser
ti
on_
begi
nni
ng(
);
br
eak;
case2:
i
nser
ti
on_
last
();
br
eak;
case3:
i
nser
ti
on_
speci
fi
ed(
);
br
eak;
case4:
del
eti
on_
begi
nni
ng(
);
br
eak;
case5:
del
eti
on_
last
();
br
eak;
case6:
del
eti
on_
speci
fi
ed(
);
br
eak;
case7:
sear
ch(
);
br
eak;
case8:
di
spl
ay(
);
br
eak;
case9:
exi
t(
0);
br
eak;
def
aul
t:
pr
int
f("
Pleaseent
erv
ali
dchoi
ce.
."
);
}
}
}
v
oidi
nser
ti
on_
begi
nni
ng(
)
{
st
ructnode*
ptr
;
i
nti
tem;
pt
r=(
str
uctnode*
)mal
l
oc(
sizeof
(st
ructnode)
);
i
f(
ptr==NULL)
{
pr
int
f("
\nOVERFLOW"
);
}
el
se
{
pr
int
f("
\nEnt
erI
tem v
alue"
);
scanf
("%d"
,&i
tem)
;

i
f(
head==NULL)
{
pt
r-
>next=NULL;
pt
r-
>pr
ev=NULL;
pt
r-
>dat
a=i
tem;
head=pt
r;
}
el
se
{
pt
r-
>dat
a=i
tem;
pt
r-
>pr
ev=NULL;
pt
r-
>next=head;
head-
>pr
ev=pt
r;
head=pt
r;
}
pr
int
f("
\nNodei
nser
ted\
n")
;
}

}
v
oidi
nser
ti
on_
last
()
{
st
ructnode*
ptr
,*
temp;
i
nti
tem;
pt
r=(
str
uctnode*
)mal
l
oc(
sizeof
(st
ructnode)
);
i
f(
ptr==NULL)
{
pr
int
f("
\nOVERFLOW"
);
}
el
se
{
pr
int
f("
\nEnt
erv
alue"
);
scanf
("%d"
,&i
tem)
;
pt
r-
>dat
a=i
tem;
i
f(
head==NULL)
{
pt
r-
>next=NULL;
pt
r-
>pr
ev=NULL;
head=pt
r;
}
el
se
{
t
emp=head;
whi
l
e(t
emp-
>next
!=NULL)
{
t
emp=t
emp-
>next
;
}
t
emp-
>next=pt
r;
pt
r->pr
ev=t
emp;
pt
r-
>next=NULL;
}

}
pr
int
f("
\nnodei
nser
ted\
n")
;
}
v
oidi
nser
ti
on_
speci
fi
ed(
)
{
st
ructnode*
ptr
,*
temp;
i
nti
tem,
l
oc,
i
;
pt
r=(
str
uctnode*
)mal
l
oc(
sizeof
(st
ructnode)
);
i
f(
ptr==NULL)
{
pr
int
f("
\nOVERFLOW"
);
}
el
se
{
t
emp=head;
pr
int
f("
Ent
ert
hel
ocat
ion"
);
scanf
("%d"
,&l
oc)
;
f
or(
i=0;
i
<loc;
i
++)
{
t
emp=t
emp-
>next
;
i
f(
temp==NULL)
{
pr
int
f("
\nTher
ear
elesst
han%del
ement
s",
loc)
;
r
etur
n;
}
}
pr
int
f("
Ent
erv
alue"
);
scanf
("%d"
,&i
tem)
;
pt
r-
>dat
a=i
tem;
pt
r-
>next=t
emp-
>next
;
pt
r->pr
ev=t
emp;
t
emp-
>next=pt
r;
t
emp-
>next
->pr
ev=pt
r;
pr
int
f("
\nnodei
nser
ted\
n")
;
}
}
v
oiddel
eti
on_
begi
nni
ng(
)
{
st
ructnode*
ptr
;
i
f(
head==NULL)
{
pr
int
f("
\nUNDERFLOW"
);
}
el
sei
f(
head-
>next==NULL)
{
head=NULL;
f
ree(
head)
;
pr
int
f("
\nnodedel
eted\
n")
;
}
el
se
{
pt
r=head;
head=head-
>next
;
head-
>pr
ev=NULL;
f
ree(
ptr
);
pr
int
f("
\nnodedel
eted\
n")
;
}

}
v
oiddel
eti
on_
last
()
{
st
ructnode*
ptr
;
i
f(
head==NULL)
{
pr
int
f("
\nUNDERFLOW"
);
}
el
sei
f(
head-
>next==NULL)
{
head=NULL;
f
ree(
head)
;
pr
int
f("
\nnodedel
eted\
n")
;
}
el
se
{
pt
r=head;
i
f(
ptr
->next!
=NULL)
{
pt
r=pt
r->next
;
}
pt
r->pr
ev-
>next=NULL;
f
ree(
ptr
);
pr
int
f("
\nnodedel
eted\
n")
;
}
}
v
oiddel
eti
on_
speci
fi
ed(
)
{
st
ructnode*
ptr
,*t
emp;
i
ntv
al;
pr
int
f("
\nEnt
ert
hedat
aaf
terwhi
cht
henodei
stobedel
eted:
");
scanf
("%d"
,&v
al)
;
pt
r=head;
whi
l
e(pt
r->dat
a!=v
al)
pt
r=pt
r->next
;
i
f(
ptr-
>next==NULL)
{
pr
int
f("
\nCan'
tdel
ete\
n")
;
}
el
sei
f(
ptr-
>next-
>next==NULL)
{
pt
r->next=NULL;
}
el
se
{
t
emp=pt
r->next
;
pt
r->next=t
emp-
>next
;
t
emp-
>next-
>pr
ev=pt
r;
f
ree(
temp)
;
pr
int
f("
\nnodedel
eted\
n")
;
}
}
v
oiddi
spl
ay(
)
{
st
ructnode*
ptr
;
pr
int
f("
\npr
int
ingv
alues.
..
\n"
);
pt
r=head;
whi
l
e(pt
r!=NULL)
{
pr
int
f("
%d\
n",
ptr
->dat
a);
pt
r=pt
r-
>next
;
}
}
v
oidsear
ch(
)
{
st
ructnode*
ptr
;
i
nti
tem,
i
=0,
fl
ag;
pt
r=head;
i
f(
ptr==NULL)
{
pr
int
f("
\nEmpt
yLi
st\
n")
;
}
el
se
{
pr
int
f("
\nEnt
eri
tem whi
chy
ouwantt
osear
ch?
\n"
);
scanf
("%d"
,&i
tem)
;
whi
l
e(pt
r!
=NULL)
{
i
f(
ptr
->dat
a==i
tem)
{
pr
int
f("
\ni
tem f
oundatl
ocat
ion%d"
,i
+1)
;
f
lag=0;
br
eak;
}
el
se
{
f
lag=1;
}
i
++;
pt
r=pt
r->next
;
}
i
f(
fl
ag==1)
{
pr
int
f("
\nI
tem notf
ound\
n")
;
}
}

You might also like