【发布时间】:2017-11-29 14:42:16
【问题描述】:
FindMergePoint() 的前向声明
int FindMergePoint(Node *Larger,int largeCount,Node *Smaller,int SmallCount);
根据大小计算两个列表长度的函数将列表传递给 FindMergePoint(),它会返回交集节点。
int FindMergeNode(Node *headA, Node *headB)
{
Node *PTRA = headA;
Node *PTRB = headB;
int count1 = 0,count2 = 0;
//Count List One
while(PTRA != NULL){
count1++;
PTRA = PTRA->next;
}
//Count List Two
while(PTRB != NULL){
count2++;
PTRB = PTRB->next;
}
//If First list is greater
if(count1 >= count2){
return FindMergePoint(headA,count1,headB,count2);
}
else{//Second is greater
return FindMergePoint(headB,count2,headA,count1);
}
}
获取越来越小的列表并找到合并点的函数
int FindMergePoint(Node *Larger,int largeCount,Node *Smaller,int SmallCount){
Node *PTRL = Larger;
//Now traversing till both lists have same length so then we can move
parallely in both lists
while(largeCount != SmallCount){
PTRL = PTRL->next;
largeCount--;
}
Node *PTRS = Smaller;
//Now PTRL AND PTRS WERE SYNCHRONIZED
//Now,Find the merge point
while(PTRL->next != PTRS->next){
PTRL = PTRL->next;
PTRS = PTRS->next;
}
return PTRL->data;
}
【问题讨论】:
-
我建议您在单步执行代码时使用调试器并绘制列表。
-
你应该找出代码出了什么问题。它不编译吗?它不链接吗?错误信息是什么?它会崩溃吗?哪条线?它会产生不正确的结果吗?它产生了哪些结果,您期望得到哪些结果?我们如何重现该问题?
-
您是否被允许破坏原始列表的结构?
-
在你的上下文中合并是什么真的不清楚。这个用户将如何处理合并点?
-
你为函数赋予了哪些值?它给出了哪个答案?哪个答案是正确的?
标签: c++ data-structures merge linked-list singly-linked-list