原创 雙向循環鏈表DualCircleList的實現(利用Linux內核鏈表)

目標   使用Linux內核鏈表實現雙向循環鏈表DualCircleList。 設計思路   數據結點之間在邏輯上構成雙向循環鏈表,頭結點僅用於結點的定位。 實現思路 (1)通過模板定義 DualCirclelist 類,繼承

原创 鏈式隊列LinkQueue的實現

和StaticStack類似,當數據元素爲類類型,StaticQueue 的對象在創建時,會多次調用元素類型的構造函數,影響效率。需要實現鏈式隊列。 隊列的鏈式存儲實現 設計要點 (1)類模板,抽象父類Queue的直接子類;

原创 鏈式棧LinkStack的實現

上一篇是講解StaticStack的實現,但是有一個的問題: 由於順序棧內部實現是採用原生數組來實現的,當存儲的元素爲類類型時,StaticStack 的對象在創建時,會多次調用元素類型的構造函數,這樣就會影響效率。這時候就

原创 基於順序存儲結構的隊列StaticQueue的實現

隊列的概念 隊列是一種特殊的線性表,隊列僅能在線性表的兩端進行操作: (1)隊頭(Front) : 取出數據元素的一端 (2)隊尾(Rear):插入數據元素的一端 對列的特性 先進先出 Queue #ifndef _QUE

原创 用戶界面與業務邏輯的分離

在實現計算器程序的時候要使用用戶界面與業務邏輯分離的思想。 界面與邏輯 基本程序架構一般包含: - 用戶界面模塊(UI):接受用戶輸入及呈現數據; -業務邏輯模塊(Business Logic) :根據用戶需求處理數據 如何交

原创 網易遊戲技術崗在線編程題(一)

轉自:網易遊戲技術崗在線編程題(一) - CSDN博客 https://blog.csdn.net/k346k346/article/details/50909295 題目來源:牛客網-網易2016年研發工程師編程題。

原创 FFmpeg調整音視頻播放速度

1. 調整視頻速率 1.1 原理 調整視頻速率的原理爲:修改視頻的pts,dts  此過程由於不用進行解碼編碼,所以費時很少 1.2 setpts修改視頻速率 ffmpeg -i input.mkv -an -fi

原创 循環鏈表 CircleList的實現並解決約瑟夫環問題

本篇分析一下LinkList的另一個子類CircleList的實現,可參考以下兩篇博客: (1)單鏈表LinkList的實現 (2)靜態單鏈表StaticLinkList的實現 循環鏈表的定義 (1)概念上 1、任意數據

原创 雙向鏈表DualLinkList的實現

單鏈表的缺陷 在前文中實現了單鏈表LinkList(點擊這裏),但是單鏈表存在一定的缺陷: 只能從頭結點開始高效訪問鏈表中的數據元素(單向性); 如果需要逆向訪問單鏈表中的數據元素將極其低效; 數據插如操作和取數據元素操作時間複

原创 基於順序存儲結構的棧StaticStack的實現

關於棧和隊列,準備寫5篇文章。其中棧的部分包括基於順序存儲結構的棧和鏈式棧兩種,分別是StaticStack和LinkStack。同樣隊列也有兩種,基於順序存儲結構的隊列和鏈式隊列,分別是StaticQueue和LinkQueue

原创 靜態單鏈表StaticLinkList的實現

  單鏈表LinkList具有缺陷,在長時間使用單鏈表對象頻繁增加和刪除數據元素的時候,容易使得堆空間產生大量的內存碎片導致系統運行變慢。   設計靜態單鏈表的思路是:在單鏈表內部增加一片預留的空間,所有的Node對象都在這片空

原创 如何將通用樹轉換爲二叉樹

通用樹採用的是雙親孩子表示法: (1)每個結點都有一個指向其雙親的指針; (2)每個結點都若干個指向其孩子的指針。 如何將這棵樹轉化爲二叉樹呢?可採用孩子兄弟表示法: (1)每個結點都有一個指向其第一個孩子的指針; (

原创 《現代操作系統》讀書筆記2

轉自:https://blog.csdn.net/ingwfj/article/details/52332615 再次拿起《現代操作系統》這本書,精心仔細閱讀,又有了幾點體會記錄一下。 操作系統的功能或者說職責:向下管理資

原创 RGB/HSV/YUV顏色空間模型總結

轉自:http://blog.sina.com.cn/s/blog_679741950100ivz0.html 顏色通常用三個相對獨立的屬性來描述,三個獨立變量綜合作用,自然就構成一個空間座標,這就是顏色空間。而顏色可以由

原创 C++中cin的詳細用法

轉自: C++中cin的詳細用法 - CSDN博客 https://blog.csdn.net/k346k346/article/details/48213811 代碼編譯運行環境:VS2012+Win32+Debug。