链表常用的几个操作
原创
©著作权归作者所有:来自51CTO博客作者亓官劼_的原创作品,请联系作者获取转载授权,否则将追究法律责任
大家好,我叫亓官劼(qí guān jié )
2.7 链表常用的几个操作:
- 求最值
ElemType GetMax(LinkList L) {
LNode* p = L->next;
ElemType m = p->data;
while (p){
if (p->data > m)
m = p->data;
p = p->next;
}
return m;
}
- 逆置线性表
链表
bool InverseList(LinkList &L) {
LNode *q, *p;
p = L->next;
q = L->next;
q = q->next;
p->next = NULL;
p = q;
while (p)
{
q = q->next;
p->next = L->next;
L->next = p;
p = q;
}
return true;
}
- 归并线性表(有序归并)
bool ListMerge(LinkList &La, LinkList &Lb, LinkList &Lc) {
// 把元素递增排列的链表A和B合并为C,且C中元素递增排列,使用原表空间。A,B,C都是带头结点的单链表。
LNode *pa, *pb, *pc;
pa = La->next;
pb = Lb->next;
Lc = pc = La;
while (pa&&pb) {
if (pa->data <= pb->data) {
pc->next = pa;
pc = pa;
pa = pa->next;
}
else {
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb;
return true;
}