原创 順序表的動態申請空間版本

順序表的動態申請空間版本 順序表的動態版本與靜態版本的區別在於:動態版本預先開闢比較小的空間,當空間不足時再追加若干空間,靜態順序表則一次開闢足夠大的空間,靜態順序表的實現在我的上一篇博客。 動態順序表仍需建立一個結構體: typedef

原创 實現一個函數,可以左旋字符串中的k個字符

實現一個函數,可以左旋字符串中的k個字符。 AABCD左旋一個字符得到ABCDA AABCD左旋兩個字符得到BCDAA 在C語言中,實現字符串旋轉的

原创 qsort 快速排序

qsort()函數用法 功能:該函數爲庫函數,使用快速排序例程進行排序。 頭文件:#include<stdlib.h> 原型:void qsort(void *base, int nelem, int width, int (*fcmp)

原创 編寫一個函數實現n^k,使用遞歸實現

這是一道比較簡單的編程題,考察對遞歸的應用。 首先在函數內部需要判斷k是否爲0(指數爲0),再判斷k是否爲1(指數爲1),當k既不爲0也不爲1時使用遞歸, 判斷的三個條件即爲遞歸的出口!(遞歸的出口非常重要,如果遞歸沒有出口後果非常嚴重!

原创 模擬實現庫函數atoi

模擬實現庫函數atoi,將字符串轉換成數字。 庫函數atoi函數原型:int atoi(const char *str );  該函數在平時我們經常應用,但對該函數內部的一些判斷缺少深刻的瞭解。 如果我們直接按最基本的功能完成此函數則代碼

原创 判斷一個字符串是否爲另外一個字符串旋轉之後的字符串

判斷一個字符串是否爲另外一個字符串旋轉之後的字符串。 例如:給定s1 = AABCD和s2 = BCDAA,返回1,給定s1=abcd和s2=ACBD,返回0. 在C語言中判斷一個字符串是否爲另外一個字符串旋轉之後的字符串,可通過好幾種方

原创 寫一個宏可以將一個數字的奇數位和偶數位交換

宏函數實現一個數字二進制的奇數位和偶數位交換 宏函數在c語言編程中有不可忽視的作用,並且數字二進制的奇偶位交換也比較常見,所以用宏函數來實現數字二進制的奇數位和偶數位交換不失爲一個很好的方法。 首先我們要清楚宏函數的用法,其次要有用宏函數

原创 家庭財務管理設計與實現

家庭財務管理設計與實現 實現家庭的各種賬單(水/電/煤氣費,寬帶/電話費等)的管理功能,可以對各類賬單及用戶信息進行登記、修改、刪除等。 2、 程序的基本功能:   1. 增加、修改、刪除一個用戶資料。 2. 增加、修改、刪除一種賬單

原创 最長公共子序列(動態規劃求法)

最長公共子序列 題目:給定一個字符串s(1 <=  s <= 1000),你可以從中刪除一些字符,使得剩下的串是一個迴文串。如何刪除才能使得迴文串最長呢?    輸出需要刪除的字符個數。 通過這道題我們瞭解一下動態規劃,並通過動態規劃完成

原创 cJSON的模擬實現

CJSON CJSON是C語言的一個編解碼工具,JSON是一種輕量級數據交換格式(基於JavaScript的一個子集) CJSON主要功能: 構建和解析 json格式,發送的數據用json封裝,收到數據再

原创 數據結構的七種排序

七種排序 從大類上可以分爲插入排序、選擇排序、交換排序和歸併排序        插入排序: 插入排序、希爾排序        選擇排序:選擇排序、堆排序        交換排序:冒泡排序、快速排序        歸併排序: 歸併排序 1

原创 智能指針auto_ptr、scoped_ptr、shared_ptr和weak_ptr

RAII        資源分配即初始化,定義一個類來封裝資源的的分配和釋放,在構造函數完成資源的分配和初始化,在析構函數完成資源的清理,可以保證資源的正確釋放和初始化       RAII要求,資源的有

原创 模擬實現C++STL中的string類

       在C++中的字符串有C語言繼承過來的char* 型的,還有就是C++STL中的string型的了。        C++中的string類在實現的過程中會遇到一些特別的地方。 比如:深淺拷貝、寫時拷貝、引用計數等一些概念 淺

原创 C++的封裝、繼承、多態

面向對象的三大特性: 封裝、繼承、多態 封裝性:         所謂封裝性就是將某些東西包裝起來,外界無法直接使用,只能通過某些方式才能訪問到。面向對象理念是萬物皆對象,都有其特徵和行爲,我們把“成員變

原创 TopK問題

題目: 本公司現在要給公司員工發波福利,在員工工作時間會提供大量的水果供員工補充營養。由於水果種類比較多,但是卻又不知道哪種水果比較受歡迎,然後公司就讓每個員工報告了自己最愛吃的k種水果,並且告知已經將所有員工喜歡吃的水果存儲於一個數組中