尝试将链表拆分为一半时,我遇到了一些问题。让我们说例如我的链表是2,3,5,6,7。第一个拆分链表应该包含2,3,5,第二个应该是6,7。
我实际上还没有提供代码,因为我仍然需要在伪代码中提供一些帮助。
int check = size%2
if even
int half = size/2
while(ctrFront < half)
front.insertNode; ctrFront++; update head pointer;
while(ctrBack < half)
back.insertNode; ctrBack++; update head pointer;
if odd
int half = size/2 round up
while(ctrFront < half + 1)
front.insertNode; ctrFront++; update head pointer;
while(ctrBack < half)
back.insertNode; ctrBack++; update head pointer;
我不确定这是否是正确的方法,因为逻辑似乎有点不对。任何指南?
提前致谢。
答案 0 :(得分:0)
构建两个列表。弹出源列表直到其为空,将每个项目交替推送到新列表。使用其中一个新列表重新安装源列表的头指针。
在那里,很容易:
linkedList *newList1=NULL;
linkedList *newList2=NULL;
while(true){
node *temp;
node=listPop(&sourceList);
if(temp==NULL) break;
listPush(&newList1,temp);
temp=listPop(&sourceList);
if(temp==NULL) break;
listPush(&newList2,temp);
};