0
for 루프를 3 번만하는 이유는 무엇입니까? 노드 구조루프 루프 전용 3 회
#ifndef QUEUE_H
#define QUEUE_H
#include "Node.h"
#include <stdexcept>
template<class T>
class Queue
{
public:
Queue()
{
this->FirstElement = nullptr;
this->LastElement = nullptr;
}
void Enqueue(T value)
{
if (0 == Size())
{
FirstElement = new Node<T>(value);
LastElement = FirstElement;
}
else
{
LastElement->Previous = new Node<T>(value);
LastElement = LastElement->Previous;
}
}
T Dequeue()
{
if (0 == Size())
{
throw std::out_of_range("Out of range ! Empty stack !");
}
T element(FirstElement->Value);
if (nullptr != FirstElement->Previous)
{
Node<T>* temp = FirstElement->Previous;
delete FirstElement;
FirstElement = temp;
}
else
{
delete FirstElement;
FirstElement = nullptr;
LastElement = nullptr;
}
return element;
}
int Size()
{
int queueSize = 0;
Node<T>* element = FirstElement;
if (nullptr != FirstElement)
{
while (nullptr != FirstElement->Previous)
{
++queueSize;
}
++queueSize; //Uwzglednienie ostatniego elementu, ktory nie jest policzony w petli
}
return queueSize;
}
private:
Node<T>* FirstElement;
Node<T>* LastElement;
};
#endif // !QUEUE_H
그리고 코드 :
#ifndef NODE_H
#define NODE_H
template<class T>
struct Node
{
public:
Node(T value)
{
this->Previous = nullptr;
this->Value = value;
}
Node<T>* Previous;
T Value;
};
#endif // !NODE_H
그리고 여기에 내가 3 같다 그리고 여기 큐 클래스에 대한 코드입니다 때 루프
for (size_t i = 0; i < 10; i++)
{
std::cout << "Dodany element kolejki: " << i << std::endl;
queue.Enqueue(i);
}
는 항상 나누기 출력 :
Dodany element kolejki: 0
Dodany element kolejki: 1
Dodany element kolejki: 2
루프에 대한 대기열 넣기 메소드 호출을 10 번 삭제합니다. 컴파일러 또는 예외가 발생했거나 다른 종류의 오류가 발생해도 경고가 표시되지 않습니다. 어떤 이유로 든 3 번 반복됩니다.
가 [최소 완료하고 검증 가능한 예]를 입력하십시오 (https://stackoverflow.com/help/mcve). – Ron