原创 map,multimap,set,multiset

map和set我們之前介紹過了,現在通過對比說明一下map與multimap,set與multiset 首先map的插入操作,不能插入已經存在的鍵值,若插入已經存在的鍵值,則插入無效,可應通過相應的辦法來解決: void Test

原创 平衡二叉搜索樹——AVL樹

1.AVL樹的定義 AVL樹又稱爲高度平衡的二叉搜索樹,在此基礎上,AVL樹節點的構造我們增加了_bf這個成員,來表示平衡因子,它能保持二叉樹的高度平衡,儘量降低二叉樹的高度,減少樹的平均搜索長度。 2.AVL樹的性質 (1

原创 大數據處理問題

首先讓我們明確一下內存之間的換算: 1> 1Byte=8bit 2>1KB=1024Byte=1024*8 bit 3>1MB=1024KB=1024*1024Byte=1024*1024*8bit 4>1G=1024MB=1024*10

原创 樹&&二叉樹

1.樹的基本概念 樹是一種非線性的數據結構,是由n(n>=0)個有限個數據的元素集合,形狀像一顆倒過來的樹。就像是這樣: 樹是由唯一的根和若干互不相交的子樹組成的。其中的每一顆子樹又是一棵樹,也是由唯一根節點和互不相交的子樹

原创 求一顆二叉樹的鏡像

下面我給出一棵二叉樹和他的鏡像,所謂鏡像就是一棵樹就跟在鏡子中顯示一樣,左右反轉,示意圖如下: 根節點的左右孩子互換,我們可遞歸實現: void _MirrorTree(Node* root) { i

原创 二叉搜索樹

二叉搜索樹滿足以下性質: 1. 每個節點都有一個作爲搜索依據的關鍵碼(key),所有節點的關鍵碼互不相同。 2. 左子樹上所有節點的關鍵碼(key)都小於根節點的關鍵碼(key)。 3. 右子樹上所有節點的關鍵碼(key)都

原创 BloomFilter布隆過濾器

1、簡介: BloomFilter是一個很長的二進制向量和一系列隨機映射函數。布隆過濾器可以用於檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。 2、應用:

原创 堆的介紹與應用

堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指二叉堆。堆數據結構是一種數組對象,它可以被視爲一棵完全二叉樹結構。 堆結構的二叉存儲分爲2種形式,分別是最大堆和最小堆,最大堆就是每個父節點的值都大

原创 哈夫曼樹應用——文件壓縮

1.哈夫曼樹的簡介: 哈夫曼樹(Huffman tree),又名最優樹,指給定n個權值作爲n的葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹爲最優二叉樹,也稱爲哈夫曼樹(Huffman tree)。哈夫曼樹是帶

原创 c語言模擬實現c++的繼承多態

c++有封裝、繼承和多態三大特性,其中多態分爲靜態多態與動態多態,動態多態是通過虛函數實現的,一個類中如果有虛函數,那麼就需要維護一張虛表來存放虛函數的地址,c語言中我們用結構體來模擬類。 代碼如下: 其中A模擬父類,B模擬子

原创 STL中的set&&map

首先看一下set與map的介紹: set關聯式容器,set作爲一個容器也是用來存儲同一數據類型的數據類型,並且能從一個數據集合中取出數據,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。應該注意的是set中數元素

原创 平衡二叉搜索樹——紅黑樹

1.紅黑樹的簡介 紅黑樹是一棵二叉搜索樹,它在每個節點上增加了一個存儲位_color來表示節點的顏色,可以是Red或Black。通過對任何一條從根到葉子簡單 路徑上的顏色來約束,紅黑樹保證最長路徑不超過最短路徑的兩倍,因而近似

原创 模擬實現Vector

首先,這裏用到了類型萃取的知識,代碼如下: struct __TrueType { bool Get() { return true; } }; struct __FalseType {

原创 並查集解決朋友圈問題

首先我們來看一道題筆試題,關於朋友圈的問題: 解決這個問題,我們可以用並查集來解決。 並查集是一種數據結構,用於處理不相交集合中的合併以及查詢問題,將N個元素分成一組不相交的集合,開始時我們把每一個元素當成一個集合,然後按

原创 stat對文件的操作的三個時間

Linux中的stat是用來顯示文件信息的,首先讓我們來看一下他都顯示了什麼信息。 建立一個test.c文件,用stat來查按文件的一些信息: 其中,我們看到了一些有關事件的東西,其中包括3種時間信息 1>Access