#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
class Queue
{
private:
struct QueueNode
{
string value;
QueueNode* next;
}*head;
public:
Queue()
{
head = new(QueueNode);
head->next = NULL;
}
int Push(string value)
{
QueueNode* p = new(QueueNode);
p->value = value;
QueueNode* h;
for (h = head; h->next != NULL; h = h->next)
;
p->next = h->next;
h->next = p;
return 1;
}
int Pop(string& value)
{
if (!IsEmpty())
{
value = head->next->value;
QueueNode* p = new(QueueNode);
p = head->next;
head->next = p->next;
delete(p);
return 1;
}
else
return 0;
}
bool IsEmpty()
{
if (head->next == NULL)
return true;
else
return false;
}
int GetFront(string& value)
{
if (!IsEmpty())
{
value = head->next->value;
return 1;
}
else
return 0;
}
int GetTail(string& value)
{
if (!IsEmpty())
{
QueueNode* h;
for (h = head; h->next != NULL; h = h->next)
;
value = h->value;
return 1;
}
else
return 0;
}
};
int main()
{
string str1, str2, str3;
Queue q;
q.Push("A");
q.Push("B");
q.Push("C");
q.Pop(str1);
q.GetFront(str2);
q.GetTail(str3);
cout << str2 << endl << str3 << endl;
system("pause");
return 0;
}