Lab Stack-Queue
Lab Stack-Queue
#ifndef ELEMENT_H
#define ELEMENT_H
class Element
private:
int data;
Element* pointer;
public:
Element();
Element(int);
virtual ~Element();
};
#endif // ELEMENT_H
File Element.cpp:
#include "Element.h"
Element::~Element() {}
File LinkedList.h:
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include "Element.h"
class LinkedList
private:
Element* tail;
Element* head;
int nNum;
public:
LinkedList();
virtual ~LinkedList();
void InsertTail(Element*);
void DeleteTail();
void DeleteFirst();
};
#endif // LINKEDLIST_H
File LinkedList.cpp:
#include "LinkedList.h"
LinkedList::~LinkedList()
Element* ptr;
while (head)
ptr = head;
head = head->Getpointer();
delete ptr;
void LinkedList::InsertTail(Element* e)
if (head == nullptr)
head = tail = e;
else
tail->Setpointer(e);
tail = e;
nNum++;
void LinkedList::DeleteTail()
if (head == nullptr)
return;
if (head->Getpointer() == nullptr)
delete head;
}
else
Element* p = head;
p = p->Getpointer();
delete tail;
tail = p;
tail->Setpointer(nullptr);
nNum--;
void LinkedList::DeleteFirst()
if (head == nullptr)
return;
Element* p = head;
head = head->Getpointer();
delete p;
if (head == nullptr)
tail = nullptr;
nNum--;
File Stack.h:
#ifndef STACK_H
#define STACK_H
#include "LinkedList.h"
class Stack
private:
LinkedList linkedlist;
public:
Stack();
void PushStack(int);
int PopStack();
};
#endif // STACK_H
File Stack.cpp:
#include "Stack.h"
#include <iostream>
Stack::Stack() {}
void Stack::PushStack(int x)
linkedlist.InsertTail(e);
int Stack::PopStack()
if (linkedlist.IsEmpty())
std::cout << "STACK RONG, KHONG LAY DUOC PHAN TU" << std::endl;
}
int value = linkedlist.GetTail()->getdata();
linkedlist.DeleteTail();
return value;
File Queue.h:
#ifndef QUEUE_H
#define QUEUE_H
#include "LinkedList.h"
class Queue
private:
LinkedList linkedlist;
public:
Queue();
void EnQueue(int);
int DeQueue();
};
#endif // QUEUE_H
File Queue.cpp:
#include "Queue.h"
#include <iostream>
Queue::Queue() {}
void Queue::EnQueue(int x)
linkedlist.InsertTail(e);
}
int Queue::DeQueue()
if (linkedlist.IsEmpty())
std::cout << "QUEUE RONG, KHONG LAY DUOC PHAN TU" << std::endl;
linkedlist.DeleteFirst();
return value;
File main.cpp:
#include <iostream>
#include "Stack.h"
#include "Queue.h"
int main()
Stack stack;
Queue queue;
int value;
stack.PushStack(value);
}
if (poppedValue != -1)
cout << "Gia tri lay ra khoi stack: " << poppedValue << endl;
queue.EnQueue(value);
if (dequeuedValue != -1)
cout << "Gia tri lay ra khoi queue: " << dequeuedValue << endl;
cout << "Nhap mot so nguyen duong de chuyen doi sang he co so 2: ";
Stack binaryStack;
binaryStack.PushStack(remainder);
value /= 2;
while (true)
break;
return 0;