天天看点

链表常用的几个操作

  大家好,我叫亓官劼(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;
}      

继续阅读