取值:取单链表中第i个元素的内容
Status GetElem_L(LinkList L, int i, ElemType &e)
{
p = L->next;
j = 1;
while (p && j < i)
{
p = p->next;
++j;
}
if (!p || j > i) return ERROR;
e = p->data;
return OK;
}
查找:按值查找(获取该数据的地址或该数据的位置序号)
获取该数据的地址
Status LocateElem_L(LinkList L,ElemType e)
{
p = L->next;
while (p && p->data != e)
p = p->next;
return p;
}
获取该数据的位置序号
Status LocateElem_L(LinkList L,ElemType e)
{
p = L->next;
j = 1;
while (p && p->data != e)
{
p = p->next;
j++;
}
if (p) return j;
else return 0;
}
插入:将值为e的新节点插入表中的第i个节点的位置
Status ListInsert(LinkList& L, int i, ElemType e)
{
p = L; j = 0;
while (p && j < i - 1)//寻找第i-1个结点,p指向第i-1个结点
{
p = p->next;
++j;
}
if (!p || j > i - 1) return ERROR;
s = new LNode;
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
删除:删除第i个节点
Status LinkDelete(LinkList& L, int i)
{
p = L; j = 0;
while ((p->next) && (j < i - 1))
{
p = p->next;
++j;
}
q = p->next;
p->next = q->next;
delete q;
return OK;
}
头插法
void CreateList_H(LinkList& L, int n)
{
L = new LNode;
L->next = NULL;
for (i = n; i > 0; --i)
{
p = New LNode;
cin >> p->data;
p->next = L->next;
L->next = p;
}
}
尾插法
void CreateList_R(LinkList& L, int n)
{
L = new LNode;
L->next = NULL;
r = L;
for (i = 0; i < n; i++)
{
p = new LNode;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}