#include using namespace std; #define OK 1 #define ERROR 0 #def
#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*LinkList;
Status InitList(LinkList &L);
void CreateList_H(LinkList &L,LinkList &p,int n);
Status GetElem(LinkList L,int i,LinkList &p,ElemType &e);
LNode *LocateElem(LinkList L,ElemType e,LinkList &p);
Status ListInsert(LinkList &L,int i,ElemType e,LinkList &p,LinkList &s);
Status ListDelete(LinkList &L,int i,LinkList &p,LinkList &q);
int main()
{
LinkList L,p,q,s;
ElemType e;
InitList(L);
int n,i,j;
cin>>n;
int index=1;
while(index!=0)
{cin>>index;
if(index==1)
InitList(L);continue;
if(index==2)
CreateList_H(L,p,n);continue;
if(index==3)
GetElem(L,i,p,e);break;
if(index==4)
*LocateElem(L,e,p);break;
if(index==5)
ListInsert(L,i,e,p,s);break;
if(index==6)
ListDelete(L,i,p,q);break;}
}
Status InitList(LinkList &L)
{L=new LNode;
L->next=NULL;
return OK;
}
void CreateList_H(LinkList &L,LinkList &p,int n)
{
L=new LNode;
L->next=NULL;
for(int i=0;i<n;i++)
{
p=new LNode;
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
Status GetElem(LinkList L,int i,LinkList &p,ElemType &e)
{
p=L->next;int j=1;
while(p&&j<i){
p=p->next;
++j;
}
if(!p||j>i)
e=p->data;
}
LNode *LocateElem(LinkList L,ElemType e,LinkList &p)
{
cin>>e;
p=L->next;
while(p&&p->data!=e)
p=p->next;return p;
}
Status ListInsert(LinkList &L,int i,ElemType e,LinkList &p,LinkList &s)
{
p=L;int j=0;
while(p&&(j<i-1))
{
p=p->next;++j;
if(!p||j>i-1)return ERROR;
s=new LNode;
s->data=e;
s->next=p->next;
}
}
Status ListDelete(LinkList &L,int i,LinkList &p,LinkList &q)
{
p=L;int j=0;
while(p&&(j<i-1))
{
p=p->next;++j;
if(!p||j>i-1)return ERROR;
q=p->next;
p->next=q->next;
delete q;
}}