在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
2018-03-30 22:29
363 查看
//编写方法meld,合并之后的两个表变成空表 template<typename T> void chain<T>::meld(chain<T>& a, chain<T>& b) { chainNode<T>*pa = a.firstNode; chainNode<T>*pb = b.firstNode; int aS = a.size(); int bS = b.size(); firstNode = new chainNode<T>(pa->element); chainNode<T>*targetNode = firstNode; chainNode<T>*deleteNode; deleteNode = pa; pa = pa->next; a.firstNode = pa; ++listSize; delete deleteNode; if (aS <= bS) { while (pa!=NULL) { targetNode->next = new chainNode<T>(pb->element); deleteNode = pb; targetNode = targetNode->next; pb = pb->next; b.firstNode = pb; ++listSize; delete deleteNode; targetNode->next = new chainNode<T>(pa->element); deleteNode = pa; targetNode = targetNode->next; pa = pa->next; a.firstNode = pa; ++listSize; delete deleteNode; } targetNode->next = new chainNode<T>(pb->element); deleteNode = pb; targetNode = targetNode->next; pb = pb->next; b.firstNode = pb; delete deleteNode; ++listSize; targetNode->next = pa; deleteNode = pa; delete deleteNode; ++listSize; while (pb!=NULL) { targetNode->next = new chainNode<T>(pb->element); deleteNode = pb; targetNode = targetNode->next; pb = pb->next; b.firstNode = pb; delete deleteNode; ++listSize; } targetNode->next = pb; deleteNode = pb; delete deleteNode; ++listSize; } else { while (pb != NULL) { targetNode->next = new chainNode<T>(pb->element); deleteNode = pb; targetNode = targetNode->next; pb = pb->next; b.firstNode = pb; ++listSize; delete deleteNode; targetNode->next = new chainNode<T>(pa->element); deleteNode = pa; targetNode = targetNode->next; pa = pa->next; a.firstNode = pa; ++listSize; delete deleteNode; } targetNode->next = pb; deleteNode = pb; delete deleteNode; ++listSize; while (pa != NULL) { targetNode->next = new chainNode<T>(pa->element); deleteNode = pa; targetNode = targetNode->next; pa = pa->next; a.firstNode = pa; delete deleteNode; ++listSize; } targetNode->next = pa; deleteNode = pa; delete deleteNode; ++listSize; } }
相关文章推荐
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 在单链表中将两个链表合并,合并之后的链表使用的是输入链表的节点空间,合并之后输入链表变为空表
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 将两个递增有序的单链表合并成一个递减有序的单链表,利用原结点空间
- 不新申请空间将两个链表合并.cpp
- 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的
- 17_7_13:合并两个有序链表。实现1+2+3+...+n,不使用常规方法