原创 AVL樹

AVL樹誕生的原因 如果數據是有序的或者接近有序的,搜索二叉樹就會產生單支的情況,單支就相當於在順序表中搜索元素,降低了效率。因此1962年俄羅斯兩位數學家發明了AVL樹。 AVL樹 在二叉搜索樹中插入新的結點後,保證每個結

原创 命名管道(FIFO)

FIFO FIFO Concept 管道的一個不足之處是沒有名字,因此,只能用於具有親緣關係的進程間通信,在命名管道(named pipe或FIFO)提出後,該限制得到了克服。 FIFO不同於管道之處在於它提供一個路徑名(pat

原创 命令行參數

給main()函數傳遞兩個參數,int argc和char* argv[] argc:表示命令行參數的個數,不許要用戶傳遞,它會根據用戶從命令行輸入的參數個數,自動確定 argv[]:存儲用戶從命令行傳遞進來的參數,它的第一個成

原创 賦值運算符函數

注意點 返回值類型爲該類型的引用,並且在函數結束時返回實例自身的引用(*this) 只有返回一個引用才允許連續賦值(鏈式訪問) 參數的類型聲明爲常量引用 1.如果傳入的參數不是引用而是實例,那麼從形參到實參會調用拷貝構造

原创 棧(stack)

棧(stack)是一個後進先出的線性表,只允許在棧頂插入和刪除元素 棧的結構 棧的接口 push() :入棧 pop() : 出棧 top() : 獲取棧頂元素 empty(): 判空 size():棧中元素的個數 Pyth

原创 容器配接器(stacks)

stack(堆棧)的簡單使用 #include<iostream> #include<stack> using namespace std; int main() { stack<int> st; stack<

原创 管道(pipe)

管道概念 調用pipe函數在內核中開闢一段緩衝區稱爲管道 函數原型:int pipe(int filedes[2]) 返回值:成功–>0;失敗–> -1 有一個讀端(filedes[0])和一個寫端(filede

原创 死鎖

產生死鎖的原因: 因爲系統資源不足 進程運行推進的順序不合適 資源分配不當等 如果系統資源充足,進程的資源請求都能夠得到滿足,死鎖出現的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行推進順序與速度不同,也可

原创 消息隊列

消息隊列 消息隊列 提供了一種從一個進程向另一個進程發送一個數據塊的方法。 每個數據塊都被認爲含有一個類型,接收進程可以獨立地接收含有不同類型的數據結構。我們可以通過發送消息來避免命名管道的同步和阻塞問題。 消息隊列與命名

原创 動態順序表

動態順序表結構: typedef int DataType; typedef struct SeqListD { DataType* array;//數據指針 size_t capacity; //容量 s

原创 可變參數(variable-argument)

可變參數列表通過宏來實現,這些宏定義在頭文件#include< stdarg.h >中,包含一個類型va_list(vs中爲char*),三個宏va_start,va_arg,va_end。聲明一個va_list的變量和三個宏配

原创 C++異常處理

異常處理 事先分析程序運行時可能出現的各種意外情況,並且分別制定相應的處理方法 異常處理的方法 C++異常機制組成:try(檢查),throw(拋出),catch(捕捉) void Test() { throw

原创 STL-list

List使用雙向鏈表來管理元素 使用list,必須包含#include< list > list是定義與namespace std中的template list不支持隨機存取,所以也不提供下標操作符和at() 任何位置上插入

原创 命名空間

爲什麼需要命名空間? 引入命名空間,用來處理程序中常見的同名衝突 什麼是命名空間? 一個由程序設計者命名的內存區域 根據需要指定一些有名字(或無名)的空間區域,將一些全局實體放在裏面,與其他全局實體分隔開 創建命名空

原创 單鏈表(無頭結點)

單鏈表:是一種鏈式存儲的線性表,用一組任意的存儲單元存放線性表的元素,稱存儲單元爲一個節點。 單鏈表的結構: typedef int DataType; typedef struct Node { DataType da