這裡寫**片
//異常類
////
#ifndef except_h_
#define except_h_
#include using namespace std;
class d***ception
virtual ~d***ception() {};
virtual string tostring() const
virtual string what() const
private:
string message;
};class duplicateitemexception : public d***ception
};class nullpointerexception : public d***ception
}#endif
#include "except.h"
template class cref
explicit cref(const object &x) : obj(&x) {}
object &get() const else
} bool isnull() const
private:
object *obj;
};#endif
///redblacktree.h 最最核心類
//
#ifndef red_black_tree_h_
#define red_black_tree_h_
#include "except.h"
/**紅黑樹規則:
*1.每乙個節點不是紅色就是黑色
*2.根總是黑色的
*3.如果節點是紅色,則他的子節點必須是黑色的
*4.從根到葉節點的每條路徑,必須包含相同數目的黑色節點
*/template class redblacktree;
template class redblacknode;
template class redblacktree ;
redblacktree(const comparable &neginf);
~redblacktree();
void insert(const comparable &x);
creffind(const comparable &x);
creffindmin() const;
creffindmax() const;
bool isempty() const;
void makeempty();
typedef redblacknodenode;
private:
node *header;
node *nullnode;
//當前節點
node *current;
//當前節點的父節點
node *parent;
//祖父節點
node *grand;
//曾祖父節點
node *great;
void rotatewithleftchild(node* &k2) const;
void rotatewithrightchild(node* &k1) const;
void doublerotatewithleftchild(node* &k3) const;
void doublerotatewithrightchild(node* &k1) const;
void handlereorient(const comparable &item);
redblacknode*rotate(const comparable &item,node *theparent) const;
void reclaimmemory(node* t) const;
};template class redblacknode
friend class redblacktree;
};template redblacktree::redblacktree(const comparable &neginf)
template redblacktree::~redblacktree()
template void redblacktree::insert(const comparable &x)
} if(current != nullnode)
current = new node(x,nullnode,nullnode);
if(x < parent->element) else
handlereorient(x);
}//帶著左孩子向右移動
template void redblacktree::rotatewithleftchild(node* &k2) const
//帶著右孩子向左移動
template void redblacktree::rotatewithrightchild(node* &k1) const
template void redblacktree::doublerotatewithleftchild(node* &k3) const
template void redblacktree::doublerotatewithrightchild(node* &k1) const
template void redblacktree::handlereorient(const comparable &item)
current = rotate(item,great);
current->color = black;
} header->right->color = black;
}//通用旋轉函式
/**theparent是item的父節點,item為被旋轉的節點
*旋轉可能性:
*左子樹像向轉,左子樹向右轉
*右子樹像向轉,右子樹向右轉
*/template redblacknode* redblacktree::rotate(const comparable &item,node *theparent) const else
}template crefredblacktree::find(const comparable &x) else if(x > curr->element) else if(curr != nullnode) else }}
template crefredblacktree::findmin() const
node *itr = header->right;
while(itr->left != nullnode)
return cref(itr->element);
}template crefredblacktree::findmax() const
node *itr = header->right;
while(itr->left != nullnode)
return cref(itr->element);
}template bool redblacktree::isempty() const
template void redblacktree::makeempty()
template void redblacktree::reclaimmemory(node* t) const
}#endif
//
main.cpp
#include #include "redblacktree.h"
using namespace std;
int main(int argc, char** argv)
mysql完整版 MYSQL安裝(完整版)
一 完全解除安裝mysql yum remove mysql mysql server mysql libs compat mysql51 rm rf var lib mysql rm etc my.cnf 檢視是否還有mysql軟體 rpm qa grep mysql 如果存在的話,繼續刪除即可。...
php完整版,ThinkPHP5 0完整版
thinkphp5.0版本是乙個顛覆和重構版本,官方團隊歷時十月,傾注了大量的時間和精力,採用全新的架構思想,引入了更多的php新特性,優化了核心,減少了依賴,實現了真正的惰性載入,支援composer,並針對api開發做了大量的優化,包括路由 日誌 異常 模型 資料庫 模板引擎和驗證等模組都已經重...
JS完整版原型鏈剖析之完整版
爭對上兩篇遺留的問題建構函式和object建構函式 proto 屬性執行的問題,我們可以分析出最終他們的原型鏈 即物件原型的物件原型 最後肯定會執行null不然就會一直指向下去 建構函式和object建構函式指向的同乙個原型物件 function建構函式的原型物件 而這個原型物件的 proto 屬性...