原创 NAT外網訪問內網方法,內網端口映射外網ip

由於公網IP地址有限,不少ISP都採用多個內網用戶通過代理和網關路由共用一個公網IP上INTERNET的方法,這樣就限制了這些用戶在自己計算機上架設個人網站,要實現在這些用戶端架設網站,最關鍵的一點是,怎樣把多用戶的內網IP和一個他們唯一

原创 免費陷阱的問題--動態規劃

免費餡餅 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28835  

原创 C++模板:函數模板和模板函數

1.函數模板的聲明和模板函數的生成 1.1函數模板的聲明 函數模板可以用來創建一個通用的函數,以支持多種不同的形參,避免重載函數的函數體重複設計。它的最大特點是把函數使用的數據類型作爲參數。 函數模板的聲明形式爲: temp

原创 C++抽象類

一、純虛函數定義.      純虛函數是在基類中聲明的虛函數,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函數的方法是在函數原型後加“=0” 二、引入原因: 1、爲了方便使用多態特性,我們常常需要在基類中

原创 C++實現順序棧的基本功能

棧是限定僅在表頭進行插入和刪除操作的線性表,有着先進後出的特點(FILO); 現在我來動手實現棧的基本本功能練練手; 定義棧的頭文件如下: [cpp] view plain copy #ifndef CSTOC

原创 變量定義和聲明的區別(整理)

變量的聲明有兩種情況: 1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。 2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變量a是在別的文件中定義的。 聲明是向編譯器介紹名

原创 C++運算符重載講解與經典實例

C++中預定義的運算符的操作對象只能是基本數據類型,實際上,對於很多用戶自定義類型,也需要有類似的運算操作。例如:  class complex  {   public:    complex(double r=0.0,double I

原创 C++拷貝構造函數詳解

一. 什麼是拷貝構造函數 首先對於普通類型的對象來說,它們之間的複製是很簡單的,例如: [c-sharp] view plain copy int a = 100;   int b = a;    而類對象

原创 歸併排序的實現

歸併排序是建立在歸併操作上的一種有效的排序算法。該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。 首先考慮下如何將將二個有序數列合併。這個非常簡單,只要從比較二個數列的第一個數,誰小就先取誰,取了後就在對

原创 C++ 智能指針詳解

C++ 智能指針詳解   一、簡介 由於 C++ 語言沒有自動內存回收機制,程序員每次 new 出來的內存都要手動 delete。程序員忘記 delete,流程太複雜,最終導致沒有 delete,異常導致程序過早退出,沒有執行 delet

原创 進程與線程的通信方式

一、進程間的通信方式 # 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關係的進程間使用。進程的親緣關係通常是指父子進程關係。 # 有名管道 (namedpipe) : 有名管道也是半雙工的通信方式

原创 什麼是死鎖及死鎖的必要條件和解決方法【轉】

進程死鎖及解決辦法 操作系統 2009-09-24 16:48:58 閱讀767 評論1   字號:大中小 訂閱  一、要點提示 (1) 掌握死鎖的概念和產生死鎖的根本原因。 (2) 理解產生死鎖的必要條件--以下四個條件同時具備

原创 單鏈表排序----快排 & 歸併排序

題目描述:   給定一個亂序的單鏈表的頭節點,對該鏈表中的節點進行排序    要求時間複雜度爲O(nlgn),空間複雜度爲O(1)        分析:   由於題目要求時間複雜度我O(nlgn),因此選擇排序

原创 利用數組實現的堆排序

void HeapSort(int a[],int n) { int i; for(i = n/2; i > 0; i--){//構建初始堆 HeapAdjust(a,i,n); } for(i = n; i > 1; i

原创 鏈表刷題總結-技巧以及注意事項

技巧: 1.插入頭節點的技巧,諸如:刪除鏈表中重複節點的題,反轉鏈表某個區間的題,鏈表的直接插入,合併連個鏈表(可以先在鏈表1的頭部新增一個頭部節點,然後將該新增的頭節點指向鏈表1的頭節點,然後再進行操作,並將合併後的鏈表用鏈表1返回)等