原创 逆置反轉單鏈表

題目:定義一個函數,輸入一個鏈表的頭節點,反轉鏈表反轉鏈表並輸出反轉後的鏈表頭節點。鏈表節點定義如下: struct ListNode { ListNode() :_next(NULL) , _data

原创 劍指offer面試題-判斷鏈表是否帶環並求環的入口點和環的長度

題目:輸入一個鏈表的頭節點,判斷鏈表是否帶環,若帶環,求環的入口點,和環的長度。 判斷鏈表是否帶環 思路:設置兩個指針(fast, slow),初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鏈表存在環,則fa

原创 消息隊列實現從一個進程向另一個進程發送一個數據塊的方法

首先是Comm.h的代碼 #include<stdio.h> #include<string.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #de

原创 實現1+2+3...+n,要求不能使用乘除法、循環、條件判斷、選擇相關的關鍵字

利用構造函數和靜態數據成員 class Temp { public: Temp() { ++n; sum += n; } static void reset()

原创 shared_ptr循環引用問題

我們首先通過代碼瞭解一下循環引用的情況 首先是shared_ptr的實現 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stdlib.h> usi

原创 不用加減乘除做加法

題目: 寫一個函數,求兩個整數之和,要求函數體內不得使用+ - * / 四則運算符號。(也不能使用++)。 思路解析:實際上一個加法計算我們可以分三步。例如15 + 7 = 22 只做各個位相加不進位,此時相加的結果是

原创 劍指offer面試題-二叉樹的前序中序後序遍歷

題目 傳入一個樹的根節點,分別採用非遞歸實現樹的前序,中序,後序遍歷。節點定義如下。 struct BinaryTreeNode { BinaryTreeNode(char data) :_pLeftC

原创 求鏈表中倒數第K個節點

題目:輸入一個鏈表輸出鏈表中的第K個節點,(計數從1開始),鏈表節點定義如下: struct ListNode { ListNode() :_next(NULL) , _data(0) {}

原创 模擬實現boost庫裏的智能指針

智能指針 什麼是智能指針呢,它是行爲類似於指針的類對象,但這種對象還有其他功能。我們爲什麼要封裝智能指針類對象呢?這是因爲C++中的動態內存需要用戶自己來維護,動態開闢的空間,在出函數作用域或者程序正常退出前必須釋放掉,否則會

原创 二叉樹的鏡像

題目:完成一個函數,輸入一個二叉樹,該函數輸出他 結點定義如下 typedef struct TreeNode { TreeNode(char data) :_pleft(NULL) , _prigh

原创 給定一個整數N,那麼N的階乘N!末尾有多少個0呢?例如:N=10,N!=3 628 800,N!的末尾有兩個0。

題目:給定一個整數N,那麼N的階乘N!末尾有多少個0呢?例如:N=10,N!=3 628 800,N!的末尾有兩個0。 思路:如果N是一個很大的數,它的階乘可能已超出計算機所能計算的最大範圍,因此可能會導致溢出。我們換個角度想,

原创 面試題:判斷一個節點是否在一棵二叉樹中

題目:判斷一個節點是否在一棵二叉樹中 結點定義如下 struct BinaryTree { BinaryTree(char data) :_pLeft(NULL) , _pRight(NULL)

原创 C++的單例模式與線程安全單例模式(懶漢/餓漢)

什麼是單例模式 單例模式:是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例。即一個類只有一個對象實例。 單例類的實現 構造函數聲明爲私有(private

原创 劍指offer面試題-合併兩個有序鏈表

題目: 輸入兩個遞增有序的鏈表,合併這兩個鏈表並使新鏈表中的結點仍然是有序的,具體示例如下圖,鏈表結點定義如下: struct ListNoe { ListNoe() :_next(NULL) , _

原创 二叉樹的層序遍歷

題目:實現一顆二叉樹的層序遍歷,樹的結點定義如下 typedef struct TreeNode { TreeNode(char data) :_pleft(NULL) , _pright(NULL)