int Last(List L,List P){
int ret =1;
List last =L;while(last){if(last->Next ==P){
ret =0;break;}
last = last->Next;}return ret;}
List MakeEmpty(){
List head =(List)malloc(sizeof(struct LNode));
head->Next =NULL;return head;}
Position Find(List L, ElementType X){
Position ret =ERROR;
List t =L->Next;while(t){if(t->Data ==X){
ret = t;break;}
t = t->Next;}return ret;}
bool Insert(List L, ElementType X, Position P){
bool flag =false;if(Last(L,P)){printf("Wrong Position for Insertion\n");}else{
List add =(List)malloc(sizeof(struct LNode));
List p =L, t = p->Next;while(t||t==P){if(t==P){
add->Data =X;
add->Next = t;
p->Next = add;
flag =true;break;}
p = t;
t = t->Next;}}return flag;}
bool Delete(List L, Position P){
bool flag =false;if(Last(L,P)){printf("Wrong Position for Deletion\n");}else{
List p =L, t = p->Next;while(t){if(t ==P){
p->Next = t->Next;free(t);
flag =true;break;}
p = t;
t = t->Next;}}return flag;}