#include "ll.h" #include #include void LinkedList::Link::initialize(unsigned uiData, Link *pNext) { m_uiData = uiData; m_pNext = pNext; } LinkedList::Link::Link(unsigned data, Link *pnext) : m_uiData(data), m_pNext(pnext) { } LinkedList :: Link() : m_pHead(nullptr) { } LinkedList::~LinkedList() { unsigned num; while(remove(num)); } void LinkedList::initialize() { this->m_pHead = nullptr; // This linked list is empty. } bool LinkedList::insert(unsigned uiData) { //Link* new_link = new Link;// Get a new node. m_pHead = new Link(uiData, m_pHead); return true; /*new_link->initialize(uiData, this->m_pHead); // Fill it with data. this->m_pHead = new_link; // Put it at the head. return true;*/ // Indicate success. } bool LinkedList::remove(unsigned &pData) { if (!m_pHead) // Empty list? return false; // Indicate failure. Link *temp = m_pHead; // Point to the first node. m_pHead = m_pHead -> next; pData = temp -> m_uiData; delete temp; return true; this->m_pHead = this->m_pHead->m_pNext; // Remove the first node. *pData = temp->m_uiData; // Obtain first node’s data. return true; // Indicate success. } ostream & operator << (ostream &os, const LinkedList &l) { for(auto p = l.m_pHead; p; p = p -> m_pNext) { os << p -> m_uiData << ' '; } return os << '\n'; }