c排队,排序顺序
所以c排队,排序顺序
复制的元素,如果我有一个队列
a --> b --> NULL;
,当我使用功能
void duplicate(QueueNodePtr pHead, QueueNodePtr *pTail)
它会给
a --> a --> b --> b --> NULL
我不能用ju排序来解决我的问题尾巴的参考。
我所能做的就是
a --> b --> a --> b --> NULL
你会怎么处理这个?
基本代码是好的,但我需要的是提示,
谢谢!
如果你能找出在队列(N)元素的数量,那么你可以简单做到以下几点:
for i = 1 to N
e = remove(queue)
insert(queue, e)
insert(queue, e)
您将获得每个元素使用队列操作复制。
如果你想直接操作数据,那么它不再是一个队列 - 它是一个(链接)列表。
我想删除它并把它放回去,我想这是唯一的方法。非常感谢! – user1420929 2013-02-17 05:00:19
难道你不能从队列中弹出物品,并将它们两次推入新的队列?
编辑:如果您需要原始队列来存储结果,什么阻止您将这些项目从临时队列中弹出并推回到原始队列中。
我有以下这短暂的伪代码试图实现自己的目标
void duplicateQueue(QueueNode *head, QueueNode *tail)
{
QueueNode *curr;
QueueNode *node;
//Initialize curr to head
curr = head
do
{
// Create a new node
node = (QueueNode *) malloc(sizeof(QueueNode));
// Initilaize the node
node->data = curr->data;
// Create link from node to curr->next
node->next = curr->next;
//Create a link from current to new node
curr->next = node;
// move current to next original element
curr = node->next;
}while(curr != NULL);
}
谢谢,但头必须通过价值! – user1420929 2013-02-17 05:05:29
@ user1420929对不起,我没有收到您的评论。头部价值的参考必须通过。还是你的意思是说你想从整个系列的某个中间点复制? – Ganesh 2013-02-17 07:24:18
队列都是关于插入顺序,所以你不应该能够与篡改。此外,请将您的标记更改为C++而不是c – 2013-02-16 23:54:04
在您的问题中,** a - > a - > b - > b - > NULL **'双星号表示什么? – Ganesh 2013-02-16 23:57:21
为什么选择C++?我工作在C – user1420929 2013-02-17 04:59:35