原创 設計模式——單例模式(懶加載)

這篇文章總結幾種比較常用的設計模式,,,不懂得設計模式。。。怎麼敢稱熟悉OOP思想。 單例模式的核心結構中只包含一個被稱爲單例類的特殊類,通過單例模式可以保證系統中一個類只有一個實例 由於快加載單例模式是線程安全的,所以本文只討論

原创 從彙編角度淺談i++和++i的區別

從彙編角度淺談i++和++i的區別 初學之時,我認爲i++和++i其實並沒有多大區別,i++是先取i的值,再給i值加1,++i是先給i值加1,再取i的值,都是自增運算,效率感覺都差不多,最終實現的都是i值加1。直到看到了下面的代碼

原创 atoi函數的實現

atoi函數要求 我所實現的atoi函數有以下幾個要求: 1,這個函數需要丟棄之前的空白字符,直到找到第一個非空白字符。之後從這個字符開始,選取一個可選的正號或者符號後面跟隨儘可能多的數字,並將其解釋爲數字的值。 2,字符串可以

原创 冒泡排序及快速排序實現

各位碼友身爲軟件開發工程師,算法中的排序可謂是重重之重,那麼今天小碼哥就給大家帶來兩種交換排序,簡單算法中的冒泡排序,和號稱排序算法中的王者快速排序,是不是很期待呀大笑大笑,話不多說,碼代碼啦!!! 冒泡排序 先給大家介紹一下什

原创 整型在字符數組中的存儲

這篇文章我們來討論整型在字符數組中的存儲 首先我們來討論一下字符 大家都知道一個字符佔用一個字節,無符號字符型的範圍是從0~255,而有符號字符型的範圍是-128~127,那麼對於有符號字符型而言,大於127或小於-128的數該怎

原创 查找倒數第K個節點

1,實現思路 查找倒數第K個節點 第一種思路: 倒數第K個節點也就是正數第N-K+1個節點,我們可以將鏈表遍歷一遍求出鏈表的長度N,然後在遍歷到第N-K+1個節點,就實現了查找倒數第K個節點。

原创 單鏈表是否有環

1,實現思路 如何判斷一個單鏈表是否有環? 我們可以定義兩個指針,第一個指針一次遍歷一步,第二個指針一次遍歷兩步,如果第二個指針指向NULL,則單鏈表無環,如果第二個指針與第一個指針相遇,則說明

原创 data,bss和rodata段的區別與聯繫

有人可能會說,全局內存就是全局變量嘛,有必要專門一章來介紹嗎?這麼簡單的東西,還能玩出花來?我從來沒有深究它,不一樣寫程序嗎?關於全局內存這個主題雖然玩不出花來,但確實有些重要,瞭解這些知識,對於優化程序的時間和空間很有幫助。因爲有好幾次

原创 轉換表實現簡單計算器

## **轉換表** ## 轉換表 : 一個函數指針數組 創建一個轉換表需要兩個步驟, 1,聲明並初始化一個函數指針數組,並確保這些函數原型出現在這個數組聲明之前。 double add(doubl

原创 static關鍵字的總結

C++中的static關鍵字的總結   C++的static有兩種用法:面向過程程序設計中的static和麪向對象程序設計中的static。前者應用於普通變量和函數,不涉及類;後者主要說明static在類中的作用。 1.面向過程設計中的

原创 堆排序

講堆排序之前,先講一下簡單選擇排序! 1,簡單選擇排序 基本思想:就是通過n-i次關鍵字間的比較,從n-i+1個數據中選出關鍵字最小的數據,並與第i個數據進行交換。 2,簡單選擇排序的代碼實現 vo

原创 歸併排序

二路歸併排序 1,遞歸思想 假設初始列表含有n個記錄,則可以看成n個有序子序列,每個有序子序列的長度爲1,然後兩兩歸併,得到n/2個長度爲2的有序子序列,再兩兩歸併,如此重複下去,直到得到一個長度爲n的有序序列爲

原创 const int *& 的類型

1,簡單介紹 const int * & 類型 , 其實就是 一個 const int * 型的指針,因爲&會自動解引用,只不過該指針所指向的值不能被改變,並且指向也不能被改變。 值不能改變是因爲有const , const int*

原创 O(1)的時間複雜度下刪除單鏈表中的節點

1,基本思路 在單鏈表中如果要刪除一個節點,需要通過頭結點找到該節點的前驅節點,然後讓該節點的前驅節點指向它的後繼節點,然後free點當前節點就實現了單鏈表的刪除,但是這樣的刪除需要遍歷到當前節點的前驅節

原创 單鏈表的逆置

1,題目 定義一個函數,輸入一個鏈表的頭節點,逆置該鏈表並輸出逆置鏈表的頭節點,鏈表的定義如下: typedef int ElemType; typedef struct LNode { Ele