单链表

LInkList

Insert 插入

void addToHead(int el) {
   if (tail != 0) {      // 如果链表不为空
         tail->next = new IntSLLNode(el);
         tail = tail->next;
    }
    //向空链表插入
    else head = tail = new IntSLLNode(el);
}

Find 查找

bool isInList(int el) {
    IntSLLNode *tmp;
    for (tmp = head; tmp != 0 && !(tmp->info == el); tmp = tmp->next);
    return tmp != 0;
}

**Delete 删除

void deleteNode(int el) {
    if (head != 0){                     // 如果链表不为空
         if (head == tail && el == head->info) { // 如果链表只有一个结点
              delete head;                       
              head = tail = 0;
         }
         else if (el == head->info) {  // 删除头结点
              IntSLLNode *tmp = head;
              head = head->next;
              delete tmp;              // 删除原头结点
         }
         else {    // 如果链表不只一个结点
              IntSLLNode *pred, *tmp;
              for (pred = head, tmp = head->next; tmp != 0 && !(tmp->info == el);pred = pred->next, tmp = tmp->next);//要删除的结点不是头结点
              if (tmp != 0) 
                   pred->next = tmp->next;
              if (tmp == tail)
                   tail = pred;
              delete tmp;
         }
    }
} 

**Merge 合并

//有序带头结点的链表合并
void   MergeList_L (LinkList &La,LinkList &Lb,LinkList &Lc) {
    IntSLLNode *pa = La->link ; 
    IntSLLNode *pb = Lb->link ;//分别指向第一个结点
    IntSLLNode *pc;
    Lc = pc = La ;
    while  ( pa && pb )  {
        if  ( pa->data <= pb->data )   {
            pc->link = pa ;
            pc = pa ;
            pa = pa->link;
        }
        else  {  
            pc->link = pb ;
            pc = pb ;
            pb = pb->link ;
        } 
    }
    pc->link = pa ? pa : pb ;//处理剩余部分
    delete  Lb ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值