在某个位置划分链表



我想知道是否有人可以指出我如何将一种方式添加到我的函数中,让用户选择在链接列表中的哪个点应该拆分它。目前,我有一个工作得很好,可以将列表分成两半。来了>>>

void split(Node *pOriginal , Node *&pHeadA, Node *&pHeadB){
if(pOriginal ==NULL){
cout<< "No element in list ";
}
else{
pHeadA = pOriginal;
Node *pTemp = pOriginal;
while(pTemp != NULL && pTemp->pNext != NULL && pTemp->pNext->pNext != NULL){
pHeadA=pHeadA->pNext;
pTemp = pTemp->pNext->pNext;
} // ends the while loop
pHeadB = pHeadA->pNext;
pHeadA->pNext = NULL;
pHeadA = pOriginal;
pOriginal = NULL;
} // ends the else
} // ends the split function 

im 寻找的目标是添加另一个参数,然后在用户输入时在某个点拆分链表。假设列表1->3->5->7->9->11->13,并且用户决定将列表拆分为5,列表的输出将是

1->3->5

和另一个

7->9->11->13

有人可以阐明我如何将它添加到我现有的功能中。

else1内的while循环是您找到要拆分的位置的地方,对吧?

您可以将其替换为不同的代码位,该代码查找具有所需值的节点(或者根据规范查找小于或等于 deisred 值的最后一个节点(。阿拉伯数字

当然,您需要一个参数来指定目标值。

通常,您不希望一个函数同时执行这两种拆分,而是准备单独的函数。3


1在我看来,最好returnif体内,让其余代码在函数范围内运行,而不是打扰else,但这是一个美学决定,可能(或可能不会(被您正在使用的编码指南所禁止。(我猜你是为课堂写这个。

2在我看来,这比像你已经做的那样使用双步到大约一半的列表更直接。

3也许叫bisectpartitionByValue。什么的。命名很重要。

相关内容

  • 没有找到相关文章

最新更新