A Nice C++ Linked List
I had reason to brush up on my C/C++ skills a bit and did something I've wanted to do for some time: implemented a nice encapsulated linked list. Read more for the source.
#include <iostream>
#include <stdarg.h>
typedef unsigned char boolean;
class LinkedList {
private:
LinkedList *m_start, *m_curr, *m_next;
int m_data;
public:
/*Constructors*/
LinkedList();
LinkedList(LinkedList* );
/*Operations*/
void insert(int);
void insertMultiple(int count, ...);
int getData();
int getDataEl();
void setData(int);
LinkedList* getNext();
void setNext(LinkedList* );
/*Movement*/
void start();
void next();
void end();
void reset();
/*Boolean*/
boolean isEnd();
boolean isEmpty();
};
LinkedList::LinkedList() {
m_curr = m_start = this;
m_next = NULL;
}
LinkedList::LinkedList(LinkedList* start) {
m_start = start;
m_next = NULL;
}
void LinkedList::insert(int el) {
m_curr->setData(el);
m_curr->setNext(new LinkedList(m_start));
m_curr = m_curr->getNext();
}
void LinkedList::insertMultiple(int count, ...) {
va_list ap;
va_start(ap, count);
while(count--)
insert(va_arg(ap, int));
va_end(ap);
}
int LinkedList::getDataEl() {
return m_data;
}
int LinkedList::getData() {
return m_curr->getDataEl();
}
void LinkedList::setData(int el) {
m_data = el;
}
LinkedList* LinkedList::getNext() {
return m_next;
}
void LinkedList::setNext(LinkedList* link) {
m_next = link;
}
void LinkedList::next() {
m_curr = m_curr->getNext();
}
boolean LinkedList::isEnd() {
return m_curr->getNext() == NULL ? 1 : 0;
}
void LinkedList::reset() {
m_curr = m_start;
}
int main() {
LinkedList l;
l.insertMultiple(3, 5, 6, 7);
for(l.reset(); !l.isEnd(); l.next())
std::cout << l.getData();
return 0;
}
Here's a doubly linked list version:
#include <iostream>
#include <stdarg.h>
typedef unsigned char boolean;
class LinkedList {
private:
LinkedList *m_curr, *m_next, *m_prev;
int m_data;
public:
/*Constructors*/
LinkedList();
LinkedList(LinkedList* );
/*Operations*/
void insert(int);
void insertMultiple(int count, ...);
/*Get Setters*/
int getData();
int getDataEl();
void setData(int);
LinkedList* getPrev();
LinkedList* getNext();
void setNext(LinkedList* );
/*Movement*/
void reset();
void prev();
void next();
void end();
/*Boolean*/
boolean isBeginning();
boolean isEnd();
boolean isEmpty();
};
LinkedList::LinkedList() {
m_curr = this;
m_prev = NULL;
m_next = NULL;
}
LinkedList::LinkedList(LinkedList* prev) {
m_prev = prev;
m_next = NULL;
}
void LinkedList::insert(int el) {
while (m_curr->getNext() != NULL)
m_curr = m_curr->getNext();
m_curr->setData(el);
m_curr->setNext(new LinkedList(m_curr));
}
void LinkedList::insertMultiple(int count, ...) {
va_list ap;
va_start(ap, count);
while(count--)
insert(va_arg(ap, int));
va_end(ap);
}
int LinkedList::getDataEl() {
return m_data;
}
int LinkedList::getData() {
return m_curr->getDataEl();
}
void LinkedList::setData(int el) {
m_data = el;
}
LinkedList* LinkedList::getPrev() {
return m_prev;
}
LinkedList* LinkedList::getNext() {
return m_next;
}
void LinkedList::setNext(LinkedList* link) {
m_next = link;
}
void LinkedList::reset() {
m_curr = this;
}
void LinkedList::next() {
m_curr = m_curr->getNext();
}
void LinkedList::prev() {
m_curr = m_curr->getPrev();
}
boolean LinkedList::isEnd() {
return m_curr->getNext() == NULL ? 1 : 0;
}
boolean LinkedList::isBeginning() {
return m_curr == NULL ? 1 : 0;
}
boolean LinkedList::isEmpty() {
return m_curr->getNext() == m_curr->getPrev() ? 1 : 0;
}
int main() {
LinkedList l;
l.insertMultiple(4, 5, 6, 7, 8);
for(; !l.isBeginning(); l.prev())
std::cout << l.getData();
return 0;
}
I have come across the by zagmir
Hi Vishnu,
As they say u by abhishesh
Don't copy this, use std::list instead by MaHuJa (not verified)
sex for free
free sex video by Drugan888
free swinger exotic by Drugan888
free full length porn by Drugan888
all free porn with email by Drugan888
free porn pics
free teen by Drugan888
|
TopicsRecent blog posts
|