//测出链表表长
int ListLength_L(LinkList L)
{
p=L; k=0;
while(p)
{
k++;
p=p->next;
}
return k;
}
//查找元素
LNode * LocateELem_L(LinkList L,ElemType e)
{
p=L;
while(p&&p->date!=e) p=p->next;
return p;
}
//查找p将其插入
void ListInsert_L(LinkList &L,Lnode *p,Lnode *s)
{
//指针p指向L为头指针的链表中某个结点,将s结点插入到p结点之前
if(p==L) //将s结点插入在链表的第一个结点之前
s->next=L;
L=s;
else
{
q=L;
while(q->next!=p) q=q->next;
q->next=s; s->next=p;
}
}
//查找p将其删除
void ListDelete_L(LinkList &L,Lnode *p,ElemType *e)
{
//p指向L为头指针的链表中某个结点,从链表中删除该结点并由e返回其元素
if(p==L) //删除链表中第一个结点,修改链表头指针
L=p->next;
else
{
q=L;
while(q->next!=p) q=q->next; //查找p的前驱结点q
q->next=p->next; //修改q结点的指针域
}
e=p->data; delete p; //返回别删除结点的数据元素,并释放结点空间
}
int ListLength_L(LinkList L)
{
p=L; k=0;
while(p)
{
k++;
p=p->next;
}
return k;
}
//查找元素
LNode * LocateELem_L(LinkList L,ElemType e)
{
p=L;
while(p&&p->date!=e) p=p->next;
return p;
}
//查找p将其插入
void ListInsert_L(LinkList &L,Lnode *p,Lnode *s)
{
//指针p指向L为头指针的链表中某个结点,将s结点插入到p结点之前
if(p==L) //将s结点插入在链表的第一个结点之前
s->next=L;
L=s;
else
{
q=L;
while(q->next!=p) q=q->next;
q->next=s; s->next=p;
}
}
//查找p将其删除
void ListDelete_L(LinkList &L,Lnode *p,ElemType *e)
{
//p指向L为头指针的链表中某个结点,从链表中删除该结点并由e返回其元素
if(p==L) //删除链表中第一个结点,修改链表头指针
L=p->next;
else
{
q=L;
while(q->next!=p) q=q->next; //查找p的前驱结点q
q->next=p->next; //修改q结点的指针域
}
e=p->data; delete p; //返回别删除结点的数据元素,并释放结点空间
}