原创 中綴表達式轉化爲後綴表達式、後綴表達式求解(棧)

計算器我們都實現了很多了,但是,我們寫的計算器都是求解兩個操作數的,並不能求解一個表達式,如今棧已經學完了,那麼我們可不可以使用棧來實現表達式的求解呢? 我們數學上求解一個表達式是如何進行的,有括號的先求括號內部的,之後先算乘除,

原创 gdb安裝、vim配置

gdb的安裝: 昨天使用vim的時候遇到了一些問題,分享一下: 首先說一下我使用gdb調試的時候出現的問題吧!在使用vim寫程序的時候避免不了的就是調試,在Linux下,調試使用的是gdb。 不過,當我輸入命令的時候,出現了報錯,

原创 稀疏矩陣的壓縮存儲和快速逆置

稀疏矩陣啊,就是矩陣中的有效元素很稀疏,稀疏到什麼程度呢?通常認爲矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣爲稀疏矩陣(sparse matrix)。 我們想,一少部分的有效元素就佔用大部分的地址空

原创 文件描述符(fd)與FILE結構體

文件描述符 內核(kernel)利用文件描述符(file descriptor)來訪問文件。文件描述符是非負整數。打開現存文件或新建文件時,內核會返回一個文件描述符。讀寫文件也需要使用文件描述符來指定待讀寫的文件。 我們知道,在L

原创 模擬實現 stack和queue

線性表是最基本、最簡單、也是最常用的一種數據結構。之前我已經寫了幾次線性表了,分別是順序表和鏈表,這兩個以各種形式實現了多次,那麼今天我麼就再來看兩種線性表,兩種特殊的線性表——棧和隊列 棧(stack) 首先說一下棧的概念:棧又

原创 迷宮

#include<iostream> using namespace std; #include<stack> #define MAX_ROW 10 #define MAX_COL 10 struct Postion {

原创 shared_ptr:定製刪除器 和 循環引用

前面我們介紹智能指針的時候,說了兩個智能指針分別是:auto_ptr和scoped_ptr,auto_ptr有問題,爲此,scoped_ptr的出現解決了這個問題,scoped_ptr太霸道,不允許別人和他共用一塊內存空間,所以,

原创 AVL樹(旋轉問題詳解)

二叉搜索樹給我們了一個搜索一個點的方法,同時,也將二叉樹中的節點排序了,但是,對於一些特殊的二叉樹來說,使用二叉搜索樹會很費空間,比如說: 左單支的這種情況,你說是二叉樹,還不如說是單鏈表呢,還節省了一大波的空間呢(右指針域),同

原创 關於二叉樹的一些題

二叉樹的創建我們已經瞭解了,現在我們在這一個基礎上來拓展一些常出現的題 1、在二叉樹中尋找一個節點——>存在,返回節點,不存在返回NULL 2、求一個節點的雙親節點——>存在,返回節點,不存在返回NULL 3、求二叉樹的高度 4、

原创 紅黑樹的實現 以及加迭代器

在說紅黑樹之前,我們先來認識一下它: 首先強調一點:紅黑樹也是二叉搜索樹。那麼它就滿足二叉搜索樹的性質,除此之外,他還有幾個比較特殊的性質,瞭解這些,有助於我們後面的分析 性質: 1、紅黑樹所有的節點都有顏色(紅或黑) 2、紅黑樹

原创 Linux下的小程序:進度條

當我們再上傳或者下載什麼東西的時候,通常會顯示一個界面,這個界面顯示的是你加載的多少,那麼在Linux下有沒有進度條呢? 今天就來實現一下吧!首先應該出現的就是一個進度,另外還有一個是百分比。百分比還好說,關鍵是進度,這是一個逐漸

原创 C++ 大總結

繼C語言之後,C++也告一個段落了,不過,只是總要串起來才能更有效的掌握,那麼現在就來再回顧一下C++的內容,並且將其串起來。 在學習C++之前,我們就用C語言實現了順序表和鏈表,這是學習數據結構的基礎,提前接觸總是好的,在學習c

原创 求一個二叉樹中兩個結點的最大距離

首先說一下距離這個詞,在二叉樹中距離就是從一個節點到另一個結點的邊的條數,爲了更爲清晰的描述這個概念,下面來看一張圖: 看上面的圖,藍色線表示的是結點4到6的距離,紅色線表示的是從結點5到6的距離,從圖中我們可以看到,不是所有的

原创 二叉搜索樹(二叉排序樹)

二叉搜索樹:又稱二叉排序樹,他有三個特點: 1、若它的左子樹不爲空,那麼它的左子樹中所有節點的值都小於根結點的值 2、若它的右子樹不爲空,那麼它的右子樹的所有節點的值都大於根結點的值 3、它的左右子樹也是二叉搜索樹 那麼現在我們就

原创 Linux進程描述符:task_struct結構體

進程是什麼? 如果有人問你,進程是什麼,你該如何回答呢? 正在執行的程序;程序的執行實例;能分配處理器並由處理器執行的實體。 進程是處於執行期的程序以及它所管理的資源(如打開的文件、掛起的信號、進程狀態、地址空間等等)的總稱。注意