一个数据结构(c++版)的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:09:23
题目如下:(将一个带头结点的单循环)链表A分解为两个具有相同结构的链表B、C,其中:B表中的结点为A表中元素的顺序号为奇数的结点,而C表中的结构点为A表中元素的顺序号为偶数的结点。用伪代码写出算法。(要求:B、C中的结点使用A中的结点)

哈哈
都考完了还没答案。。。
小松鼠有一份。

struct NODE
{
DataType data;
struct NODE *next;
};
typedef NODE * LIST;

void func(LIST A, LIST B, LIST C)
{
assert(A);
assert(B);
assert(C);

NODE *NodeA = A->next;
NODE *NodeB = B;
NODE *NodeC = C;
bool flag = true;

while(NodeA)
{
if(flag)
{
NodeB->next = NodeA;
NodeB = NodeB->next;
}
else
{
NodeC->next = NodeA;
NodeC = NodeC->next;
}
NodeA = NodeA->next;
flag = !flag;
}
NodeB->next = NULL;
NodeC->next = NULL;
}