//intToBinary.cpp
//HYQ
//Mar 20,2013
const char* bits(unsigned int val){
int i;
unsigned int m;
char* v = new char[(sizeof(val)*8)+1];
int c=48;//ascII char '0'
for(i=0,m=1<<(sizeof(val)*8-1);
m;//until 0
v[i]=(c+!!(val&m)),m=m>>1,i++);
v[i]=0;
return v;
}
C++ Island
Wednesday, 20 March 2013
Int to Binary String
Wednesday, 13 March 2013
DLL Program
Program of DLL
Function description:
1.DLL constructor
2.DLL destructor
3.DLL Copy constructor
4.DLL operator=()
5.DLL copy()
6.DLL append()
7.DLL insert()
8.DLL remove()
8.DLL del()
Function description:
1.DLL constructor
2.DLL destructor
3.DLL Copy constructor
4.DLL operator=()
5.DLL copy()
6.DLL append()
7.DLL insert()
8.DLL remove()
8.DLL del()
//dll.cpp
//HYQ
//Mar 14, 2013
//Release v0.3
DLL::DLL(){
_head = _tail = _curr = 0;
}
DLL::~DLL(){
while (del());
}
DLL::DLL(DLL& D){//prevent copying
_head = _tail = _curr = 0;
copy(D);
}
DLL& DLL::operator=(DLL& D){
while (del());
copy(D);
return *this;
}
void DLL::copy(DLL& D){
int currPos;
for(currPos=0;D.goPrev();currPos++); // findout where is current
if (!D.isEmpty()) {
for(this->append(D.visit());D.goNext();this->append(D.visit()));
}
for(D.goHead(),this->goHead();currPos;D.goNext(),this->goNext(), currPos--); // set current to what it was before
}
void DLL::append(int data){// add after tail
Node* newNode = new Node(data, _tail);
if (_tail!=0){
_tail = _curr = _curr->_next = newNode;
}
else{
_head = _tail = _curr = newNode;
}
}
void DLL::insert(int data){// inserts data before current
Node* newNode = new Node(data,_curr->_prev,_curr);
if (!isEmpty()){
if (_curr->_prev){
_curr = _curr->_prev = _curr->_prev->_next = newNode;
}
else{
_head = _curr = _curr->_prev = newNode;
}
}
else{
_head = _tail = _curr = newNode;
}
}
int DLL::remove(){// remove the currect goes next if possible
int data = visit();
del();
return data;
}
bool DLL::del(){
bool ok;
if (ok = !isEmpty()){
Node* ToDel = _curr;
if (_curr->_next){//NextNode exists, current node is not tail
_curr->_next->_prev = _curr->_prev;
}
else{
_tail = _tail->_prev;
}
if (_curr->_prev){//current node is not head
_curr->_prev->_next = _curr->_next;
}
else{
_head = _head->_next;
}
if(_curr->_next){
_curr = _curr->_next;
}
else{
_curr = _curr->_prev;
}
delete ToDel;
}
return ok;
}
Tuesday, 12 March 2013
Monday, 11 March 2013
Saturday, 9 March 2013
Program of Queue - get a node's value,previous node,print a queue
Program of Queue
Function description:
1.get a node's value
2.print a queue
3.Find previous node
Function description:
1.get a node's value
2.print a queue
3.Find previous node
//queue.cpp
//H.Y.Q
//Mar 08, 2013
//Release v0.2
//Get the data's value of current Node
int Queue::get(const Node* currentNode) const {
return currentNode->_data;
}
//Print the Node's data value in the queue
void Queue::print(){
Node* toPrint = _head;
int i=0;
while ((toPrint !=0) &&
(cout << (++i)<< ". Data: "<< get(toPrint) << "\tAddress: " << (void*) toPrint << endl) &&
(toPrint = nextNode(toPrint)));
}
//Return the previous Node of current Node
Node* Queue::prevNode(const Node* currentNode) const{
Node* prev = _head;
while (prev != 0 && nextNode(prev) != currentNode){
prev = nextNode(prev);
}
return prev;
}
Subscribe to:
Comments (Atom)
