一.取值
1.定义一个指针p指向首元节点。
2.输入所要查找的位置i,并使j=0;从而使p逐渐移动至所要查找的位置(带入若i=1则需要移动0次,若i=2,则移动1次所以j<i-1)
3.判断若p=NULL则i超过所有的节点.
代码:
status quzhi(LinkList &L,int i,ElemType &e)
{
LNode* p=L->next;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}
二.查找
1.输入需要查询的数e,定义一个地址指向首元节点。
2.用循环如果数据不等于e,则让p向下移动一个节点。
3.返回该数据的地址(函数类型为LNode*)
LNode* chazhao(LinkList L,ElemType e)
{
LNode *p=L->next;
while(p&&p->data!=e)
{
p=p->next;
}
return p;
}
三.删除
1.删除需要到定位到前一个节点的地址,(所以相对取值,此时应该定义一个P指向L)
p定义到所要删除的前一个节点后,定义一个q指向所要删除的节点(q=p->next)
将q的next赋值给p->next然后delete(p)。
代码:
status shanchu(LinkList &L,int i)
{
int j=0;
LNode* p=L,*q;
while(p->next&&j<i-1)
{
p=p->next;
j++;
}
if((!p->next)||j>i)
return ERROR;
q=p->next;
p->next=q->next;
delete q;
return OK;
}