单链表-----数据结构

来源:互联网 发布:霹雳知乎 编辑:程序博客网 时间:2024/06/11 17:08
//测出链表表长 
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;     //返回别删除结点的数据元素,并释放结点空间 
  } 
  
0 0
原创粉丝点击