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 ;
}