C队列操作问题
人若无名 2012-12-29 12:38:57 队列是全局变量,我把队列的操作函数单独封装起来(取队列头节点,队列尾插等),在队列结尾插入一个节点实现的时候,我是将一个节点(传递的是指针)直接赋值给队列队尾的next指针。我想这样的话,如果在主函数里这个节点被重新赋值,那么队列里的节点也变化了吧?或者说主函数里这个节点被释放掉了,队列里的节点也消失了吧?
我想把节点存在队列里,不想让他变化。改怎么实现?
我的代码如下(我的代码应该回出现上面说的问题吧,改怎么改?):
typedef struct task_node
{
tServiceHandler req; //保存的reqest套接字
tDatabase db; //保存数据库文件
char task[MAX_BUF_LEN]; //存放接收到的字符传请求,由HandleOneRequest解析
task_node *next;
}task_node; //定义event节点
/*
* Queue Type
*/
typedef struct Queue
{
task_node *qHead;
task_node *qTail;
int SumOfNode;
}pth_task_Queue;
/* 将一个任务放到队尾 */
int PutTask(task_node *tasknode, pth_task_Queue *pQ)
{
if(pQ == NULL || tasknode == NULL)
return FAILURE;
tasknode-> next = NULL;
if(pQ -> qHead == NULL)
pQ -> pHead = tasknode;
if(pQ -> pTail == NULL)
pQ -> pTail = tasknode;
else
{
pQ -> qTail -> next = tasknode;
pQ-> qTail = tasknode;
}
pQ -> SumOfNode += 1 ;
return SUCCESS;
}