Week 2: Stacks
1. Introduction
2. Code
#ifndef _STACK_LINKED_LIST
#define _STACK_LINKED_LIST
#include <iostream>
using namespace std;
typedef struct Node
{
int m_data;
struct Node* m_next;
}NODE, *PTRNODE;
class StackofLinkedList
{
public:
StackofLinkedList();
~StackofLinkedList();
int Pop();
void Push(const int pushData);
bool isEmpty()const;
int Size() const;
private:
PTRNODE m_pFirst;
};
#endif
<pre name="code" class="cpp">#include <iostream>
#include "StackofLinkedList.h"
using namespace std;
StackofLinkedList::StackofLinkedList():m_pFirst(NULL)
{
}
StackofLinkedList::~StackofLinkedList()
{
PTRNODE pTemp;
while (this->m_pFirst!=NULL){
pTemp = m_pFirst->m_next;
std::cout<<"Delete the element:"<< m_pFirst->m_data;
delete m_pFirst;
m_pFirst = pTemp;
}
}
int StackofLinkedList::Pop()
{
int temp = m_pFirst->m_data;
m_pFirst = m_pFirst->m_next;
return temp;
}
void StackofLinkedList::Push(const int pushData)
{
PTRNODE pOldFirst = m_pFirst;
m_pFirst = new NODE();
m_pFirst->m_data = pushData;
m_pFirst->m_next = pOldFirst;
}
bool StackofLinkedList::isEmpty()const
{
return m_pFirst == NULL;
}
int StackofLinkedList::Size() const
{
int count = 0;
PTRNODE pTemp = m_pFirst;
if(pTemp == NULL) return 0;
while (pTemp!=NULL){
pTemp = pTemp->m_next;
count++;
}
return count;
}