Position Find( List L, ElementType X )
{
List f=L;
if(f==NULL) return ERROR; //先判断是否为空链表
while(f!=NULL) //查找数据
{
if(f->Data==X) return f;
f=f->Next;
}
return ERROR; //查找不到
}
List Insert( List L, ElementType X, Position P )
{
List p=(List)malloc(sizeof(PtrToLNode)); //申请空间,存放数据
p->Data=X;
p->Next=NULL;
List pb=L;
if (P==L){ //头结点特殊操作
p->Next=L;
L=p;
return L;
}
while(pb->Next!=P&&pb->Next!=NULL)
{
pb=pb->Next;
}
if(pb->Next==P) //常规操作
{
p->Next=P;
pb->Next=p;
return L;
}
else
{
printf("Wrong Position for Insertion\n");
return ERROR;
}
}
List Delete( List L, Position P )
{
List p=L,pb=L;
if(P==L) { //头结点,特殊操作
L=L->Next;
return L;
}
while(pb->Next!=P&&pb->Next!=NULL) //常规操作
{
pb=pb->Next;
}
if(pb->Next==P){
p=P;
pb->Next=p->Next;
return L;
}
else
{
printf("Wrong Position for Deletion\n");
return ERROR;
}
}
{
List f=L;
if(f==NULL) return ERROR; //先判断是否为空链表
while(f!=NULL) //查找数据
{
if(f->Data==X) return f;
f=f->Next;
}
return ERROR; //查找不到
}
List Insert( List L, ElementType X, Position P )
{
List p=(List)malloc(sizeof(PtrToLNode)); //申请空间,存放数据
p->Data=X;
p->Next=NULL;
List pb=L;
if (P==L){ //头结点特殊操作
p->Next=L;
L=p;
return L;
}
while(pb->Next!=P&&pb->Next!=NULL)
{
pb=pb->Next;
}
if(pb->Next==P) //常规操作
{
p->Next=P;
pb->Next=p;
return L;
}
else
{
printf("Wrong Position for Insertion\n");
return ERROR;
}
}
List Delete( List L, Position P )
{
List p=L,pb=L;
if(P==L) { //头结点,特殊操作
L=L->Next;
return L;
}
while(pb->Next!=P&&pb->Next!=NULL) //常规操作
{
pb=pb->Next;
}
if(pb->Next==P){
p=P;
pb->Next=p->Next;
return L;
}
else
{
printf("Wrong Position for Deletion\n");
return ERROR;
}
}