大家好,我叫亓官劼(qí guān jié )


链表常用的几个操作_链表


2.7 链表常用的几个操作:

  1. 求最值
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;
}
  1. 逆置线性表

链表

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;
}
  1. 归并线性表(有序归并)
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;
}