/*List MakeEmpty():创建并返回一个空的线性表;
Position Find( List L, ElementType X ):返回线性表中X的位置。若找不到则返回ERROR;
bool Insert( List L, ElementType X, Position P ):将X插入在位置P指向的结点之前,返回true。如果参数P指向非法位置,则打印“Wrong Position for Insertion”,返回false;
bool Delete( List L, Position P ):将位置P的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion”并返回false。*/
List MakeEmpty()
{
List L = (List)malloc(sizeof(struct LNode));
L->Next = NULL;
return L;
}
Position Find(List L, ElementType X)
{
List p = L->Next;//带有头结点的链表头节点是空的
while (p)
{
if (p->Data == X)
return p;
p = p->Next;
}
return ERROR;
}
bool Insert(List L, ElementType X, Position P)
{
List p, temp;
for (p = L;p && p->Next != P;p = p->Next);
if (p)
{
temp = (List)malloc(sizeof(struct LNode));
temp->Data = X;
temp->Next = p->Next;
p->Next = temp;
return true;
}
printf("Wrong Position for Insertion\n");
return false;
}
bool Delete(List L, Position P)
{
if (P == NULL)
{
printf("Wrong Position for Deletion\n");
return false;
}
List p, temp;
for (p = L;p && p->Next != P;p = p->Next);
if (p)
{
temp = p->Next;
p->Next = temp->Next;
free(temp);
return true;
}
printf("Wrong Position for Deletion\n");
return false;
}