typedef struct LNode{
int data;
struct LNode* next;
}LNode,*LinkList;
bool GetElem(LinkList L,int i,int &x){
LinkList p=L->next;int j=1;
while(p!=NULL&&j<i){
p=p->next;j++;
}
if(p==NULL||j>i)return false;
x=p->data;
return true;
}
LinkList LocateElem(LinkList L,int x){
LinkList p=L->next;
while(p!=NULL&&p->data!=x)p=p->next;
return p;
}
bool ListDelete(LinkList &L,int i,int &x){
LinkList p=L;int j=0;
while(p->next!=NULL&&j<i-1){
p=p->next;j++;
}
if(p->next==NULL||j>i-1)return false;
LinkList q=p->next;
p->next=q->next;
x=q->data;free(q);
return true;
}
bool ListInsert(LinkList &L,int i,int x){
LinkList p=L;int j=0;
while(p!=NULL&&j<i-1){
p=p->next;j++;
}
if(p==NULL||j>i-1)return false;
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=x;s->next=p->next;
p->next=s;
return true;
}