原创 堆排序算法原理以及實例代碼

1、 堆排序定義 n個關鍵字序列Kl,K2,…,Kn稱爲堆,當且僅當該序列滿足如下性質(簡稱爲堆性質): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若將此序列所存儲的向量R[1..n]

原创 複雜度爲o(n)的計數排序

假定給定的一串正數,且最大值已知,可以使用這種排序。 #include<iostream> using namespace std; const int N=10; void countsort(int *a,int len) { i

原创 深入理解C++的動態綁定和靜態綁定

  爲了支持c++的多態性,才用了動態綁定和靜態綁定。理解他們的區別有助於更好的理解多態性,以及在編程的過程中避免犯錯誤。 需要理解四個名詞: 1、對象的靜態類型:對象在聲明時採用的類型。是在編譯期確定的

原创 C++的四個類型轉換

C++的四個類型轉換運算符已經有很久了,但一直沒有弄清楚它們的用法,今天看到一本書上的解釋,才大致地的瞭解了其具體的用法. 具體歸納如下:   reinterpret_cast(在編譯期間實現轉換)該函數將一個類型的指針轉換爲另一個類型的

原创 二叉樹的創建,遍歷等操作

#include <iostream> #include <deque> using namespace std; const int MaxSize=100; struct BitTree { char data; BitTre

原创 編寫複數類以及++前置和後置的區別

#include "iostream.h" //不這樣使用頭文件會報錯fatal error C1001: INTERNAL COMPILER ERROR //不知爲什麼 //using n

原创 static變量和函數

首先static變量只有一次初始化,不管在類中還是在函數中..有這樣一個函數:   void Foo() { static int a=3; // initialize std::cout << a; a++; }   這裏的

原创 八皇后問題

     在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,這就是八皇后問題。有人用圖論的方法解出共有92種擺法,這裏用c++實現:   #include <iostream> u

原创 動態申請二維數組並釋放

#include <iostream> using namespace std; //定義類型A class A { public: friend class B; //類型B爲友元類 private: int **p

原创 自定義鏈棧

#include <iostream> using namespace std; template<class T> struct Node { T data; Node<T> *next; }; template<cla

原创 拷貝構造函數和賦值表達式的區別

拷貝構造函數和賦值表達式的區別 一、引入     拷貝構造函數,是用新創建的對象來初始化某內存區域,對於一個已經被初始化的對象來進行operator=操作。 class   A;    A a; A b=a;   //拷貝構造函數調用 A

原创 他們在清華的那幾年——清華學長語錄

  (一)   永遠不要說你已經盡力了 我在高中時體育特別差,跑1000米都很要命,從來都是不及格。到了清華之後,第一節體育課,老師告訴我們每年要測3000米長跑,跑不過不許畢業,取消推研資格。怎麼辦?

原创 C++中的單例模式

 單例模式也稱爲單件模式、單子模式,可能是使用最廣泛的設計模式。其意圖是保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該實例被所有程序模塊共享。有很多地方需要這樣的功能模塊,如系統的日誌輸出,GUI應用必須是單鼠標,MODEM的聯

原创 用棧實現括弧匹配

基本思路:       遍歷字符串,如果遇到左括號就入棧,如果遇到右括號就取棧頂元素,然後比較是否匹配,如果匹配就出棧刪除相匹配的括號,如果不匹配就說明括號匹配失敗。遍歷完成後看棧中是否還有未匹配的括號,如果有就說明括號匹配失敗,如果是空

原创 任意兩個整數相加

#include <iostream> using namespace std; void ReverseStr(char *result) { int len=strlen(result); char *end=result+l