c - 将链表拆分为半个 C 编程

标签 c math linked-list pseudocode

我在尝试将链表分成两半时遇到一些问题。举例来说,我的链表是 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;

我不确定这是否是正确的方法,因为逻辑似乎有点错误。有什么指南吗?

提前致谢。

最佳答案

构造两个列表。弹出源列表直到其为空,将每个项目交替推送到新列表上。将源列表的头指针重置为新列表之一。

就这样,很简单:

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

关于c - 将链表拆分为半个 C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452460/

相关文章:

c++ - 需要帮助理解列表容器

c - 在结构中,scanf 返回 var 地址而不是值

c - Linux 内核 flush_write_buffers() 如何在 x86 上工作?

c - Lua C 扩展 : how to set metatable on new library

c++ - 参数化离散曲线的正切

使用 numpy 的 Python 微分不产生预期的输出

c - 在不使用内置反向函数的情况下反转 C 中的数字

c# - 如何四舍五入到特定的小数精度?

c++ - 有效地在对象的链接列表中搜索字符串

java - 在java中使用链表进行多项式加法