求大神解釋下
出列的時(shí)候傳入的參數(shù)沒(méi)有什么用啊。。。而且出列函數(shù)的第一行代碼感覺(jué)是多余的。。。。。而且清空隊(duì)列也并不是真正的清空對(duì)列。。。在內(nèi)存中的數(shù)據(jù)也還在,并沒(méi)有回歸到原始的狀態(tài)。。。。只是訪問(wèn)的方式讓我們誤以為數(shù)據(jù)已經(jīng)清空了而已。
出列的時(shí)候傳入的參數(shù)沒(méi)有什么用啊。。。而且出列函數(shù)的第一行代碼感覺(jué)是多余的。。。。。而且清空隊(duì)列也并不是真正的清空對(duì)列。。。在內(nèi)存中的數(shù)據(jù)也還在,并沒(méi)有回歸到原始的狀態(tài)。。。。只是訪問(wèn)的方式讓我們誤以為數(shù)據(jù)已經(jīng)清空了而已。
舉報(bào)
2016-07-30
不僅出列的第一行代碼多余,出列函數(shù)的參數(shù)也多余,老師這么寫(xiě)是為了方便打印出出列對(duì)象,展示隊(duì)列的特性是先進(jìn)先出。你能看出第一行多余,說(shuō)明你已經(jīng)理解得很好。至于清空隊(duì)列,我也納悶。。。但是清空的意義是為了可以繼續(xù)插入,從這個(gè)角度理解就說(shuō)的通,我是這么理解的。求采納
2016-08-12
雖然清空之后內(nèi)存中二進(jìn)制數(shù)據(jù)仍舊存在但它已經(jīng)沒(méi)有意義了,當(dāng)你下一次寫(xiě)入內(nèi)存的時(shí)候它就會(huì)被覆蓋。所以這個(gè)清空方式?jīng)]有影響并且也很方便。
2016-07-29
#ifndef MYQUEUE_H
#define MYQUEUE_H
class MyQueue
{
public:
?MyQueue(int queueCapacity);
?virtual ~MyQueue();
?void ClearQueue();//清空
?bool QueueEmpty() const;
?bool QueueFull()const;
?int QueueLength()const;
?bool EnQueue(int element);
?bool DeQueue(int &element);
?void QueueTraverse();//遍歷
private:
?int *m_pQueue;//隊(duì)列數(shù)組指針
?int m_iQueueLen;//隊(duì)列元素個(gè)數(shù)
?int m_iQueueCapacity;//隊(duì)列數(shù)組容量
?int m_iHead;
?int m_iTail;
};
#endif
MyQueue::MyQueue(int queueCapacity)
{
?m_iQueueCapacity = queueCapacity;
?m_pQueue = new int[m_iQueueCapacity];
?ClearQueue();
}
MyQueue::~MyQueue()
{
?delete[]m_pQueue;
?m_pQueue = NULL;
}
void MyQueue::ClearQueue()
{
?m_iHead = 0;
?m_iTail = 0;
?m_iQueueLen = 0;
}
bool MyQueue::QueueFull() const
{
?if (m_iQueueLen == m_iQueueCapacity)
?{
??return true;
?}
?else
?{
??return false;
?}
}
bool MyQueue::QueueEmpty() const
{
?if (m_iQueueLen == 0)
?{
??return true;
?}
?else
?{
??return false;
?}
}
int MyQueue::QueueLength()const
{
?return m_iQueueLen;
}
bool MyQueue::EnQueue(int element)
{
?if (QueueFull())
?{
??return false;
?}
?else
?{
??m_pQueue[m_iTail] = element;
??m_iTail++;
??m_iTail = m_iTail%m_iQueueCapacity;
??m_iQueueLen++;
??return true;
?}
}
bool MyQueue::DeQueue(int &element)
{
?if (QueueEmpty())
?{
??return false;
?}
?else
?{
??element = m_pQueue[m_iHead];
??m_iHead++;
??m_iHead %= m_iQueueCapacity;
??m_iQueueLen--;
??return true;
?}
}
void MyQueue::QueueTraverse()
{
?for (int i = m_iHead; i < m_iQueueLen+ m_iHead; i++)
?{
??cout << m_pQueue[i%m_iQueueCapacity]<<endl;
?}
}
int main()
{
?MyQueue *p = new MyQueue(20);
?p->EnQueue(10);
?p->EnQueue(12);
?p->EnQueue(14);
?p->EnQueue(16);
?p->EnQueue(18);
?p->QueueTraverse();
?cout << endl;
?int e = 0;
?p->DeQueue(e);
?cout << e <<endl;
?p->DeQueue(e);
?cout << e <<endl;
?cout << endl;
?p->QueueTraverse();
?p->ClearQueue();
?cout <<endl;
?p->EnQueue(20);
?p->EnQueue(30);
?p->QueueTraverse();
?delete p;
?p = NULL;
?system("pause");
??? return 0;
}