www.pudn.com > ActiveH263_V1.00.rar > Queue.cpp
// Queue.cpp: implementation of the Queue class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "ActiveH263.h" #include "Queue.h" #include#include #include #include #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// Queue::Queue() { count = 0; dataLinkHead = dataLinkTail = NULL; } Queue::~Queue() { QueueDataNode *p = dataLinkHead; while ((p = dataLinkHead) != NULL) { dataLinkHead = dataLinkHead->next; delete p; //释放空间 } } //在队尾加入一个新元素 void Queue::put (unsigned char * newData) { QueueDataNode *pNew = new QueueDataNode; //建立一个新的结点 if (pNew == NULL) { cout << "Memory Insufficient!"; return; } // pNew->data = newData; memcpy(pNew->data,newData,sizeof(pNew->data)); pNew->next = NULL; if (dataLinkTail == NULL) //队列为空, 新结点成为第一个结点 dataLinkHead = dataLinkTail = pNew; else { dataLinkTail->next = pNew;//队列不空, 将结点插入到链表中 dataLinkTail = pNew; } count++; } //从队头退出一个元素, 并释放空间。假定队列至少有一个元素 void Queue::get (unsigned char * getData) { QueueDataNode *pNode = dataLinkHead; // int retVal = pNode->data; memcpy(getData,pNode->data,sizeof(pNode->data)); //只有一个元素时,退出一个元素后,队列为空 if (dataLinkHead == dataLinkTail ) dataLinkHead = dataLinkTail = NULL; else dataLinkHead = dataLinkHead->next; count--; //释放节点空间 delete pNode; }