原创 July 微軟面試100題 第13題
輸入一個單向鏈表,輸出該鏈表中倒數第k個節點,倒數第0個節點是尾節點。 分析:本質是單鏈表的倒置 #include <iostream.h> #include <malloc.h> typedef struct ListNode {
原创 July 微軟面試100題 第十題自己的思路
用兩個棧相互入棧出棧。達到輸出字符的目的,代碼如下: #include <iostream.h>#include <stdio.h>#include <malloc.h>//用兩個棧處理字符串,通過出棧入棧輸出字符串typedef str
原创 Manhattan skyline problem
老師給的一道算法作業題,要求O(nlgn)實現,題目如下: Suppose that you are given the exact locations and shapes of several rectangularbuild
原创 July 微軟面試100題 第11題 求二叉樹的最大距離
求二叉樹中節點的最大距離 如果我們把二叉樹看成是一個圖,父子節點之間的連線是雙向的。我們姑且定義“距離”爲兩個節點之間的邊的個數。 寫一個程序。 求一棵二叉樹中相距最遠的兩個節點之間的距離。 ////////////////////
原创 bmp圖像的直方圖均衡化
#include <windows.h> #include <stdio.h> unsigned char *pBmpBuf;//讀入圖像的數據指針 int bmpWidth;//圖像的寬 int bmpHeight;//圖像的高 RGB
原创 浮點數到底能不能用 == 進行比較
今天看c語言,遇到一個問題,浮點類型能不能用 == 進行比較,其實這個問題以前也碰到過,在面試的時候,只知道盡量不要使用 == 對浮點數進行比較。那麼爲什麼呢,計算機中的計算不是確定的麼? 首先我們要了解浮點數在計算機中怎麼存放的。《深入
原创 二維數組動態分配和釋放 [轉]
(1)已知第二維 Code-1 char (*a)[N];//指向數組的指針 a = (char (*)[N])malloc(sizeof(char *) * m); printf("%d\
原创 把c語言中的聲明用程序翻譯成通俗的語言
理解c語言的優先級規則: A 聲明從它的名字開始讀取,然後按照優先級次序一次讀取 B 優先級從高到底依次是: b1 聲明中被括號括起來的那部分 b2 後綴操作符 括號()表示這是一個函數,而方括號【】表示這是一個數組 b3
原创 狀態機的c語言編程
一 有限狀態機的實現方式 有限狀態機(Finite State Machine或者Finite State Automata)是軟件領域中一種重要的工具,很多東西的模型實際上就是有限狀態機。 FSM的實現方式: 1) switch/c
原创 DDB與DIB的區別2
依賴於設備的位圖(DDB)DDB(Device-dependent bitmap)依賴於具體設備,這主要體現在以下兩個方面:DDB的顏色模式必需與輸出設備相一致。例如,如果當前的顯示設備是256色模式,那麼DDB必然也是256色的,即一
原创 模擬實現c語言中的動態內存分配malloc函數
動態存儲器分配器維護着一個進程的虛擬的存儲器區域,稱爲堆(heap)。分配器將堆視爲一組不同大小的塊的集合來維護。每個塊就是一個連續的虛擬存儲器片(chunk),要麼是已經分配的,要麼是空閒的。 我們這裏把內存堆空間模擬爲一個字節數組bu
原创 調色板的原理
PC機上顯示的圖象是由一個個像素組成的,每個像素都有自己的顏色屬性。在PC的顯示系統中,像素的顏色是基於RGB模型的,每一個像素的顏色由紅(B)、綠(G)、藍(B)三原色組合而成。每種原色用8位表示,這樣一個的顏色就是24位的。以此推算,
原创 動態鏈接共享庫的分析和使用
動態共享庫的工作方式與靜態鏈接庫不同。對於每個使用靜態鏈接庫的應用程序而言,在應用程序中都存在着靜態鏈接庫拷貝。但是動態共享庫卻不是這樣的,動態共享庫是被所有使用它的應用程序共享的,無論調用一個動態共享庫
原创 堆排序
堆是一種重要的數據結構,二叉堆是一顆完全二叉樹。可以用數組存放二叉堆,每個節點與數組中的存放位置對應。 這裏的堆排序算法是一種應用最大堆的原地排序算法(原地排序就是指不申請多餘的空間來進行的排序),效率爲O(nlgn)。 Max_
原创 烙餅排序
星期五的晚上,一幫同事在希格瑪大廈附近的“硬盤酒吧”多喝了幾杯。程序員多喝了幾杯之後談什麼呢?自然是算法問題。有個同事說:“我以前在餐館打工,顧客經常點非常多的烙餅。店裏的餅大小不一,我習慣在到達顧客飯桌前,把一摞餅按照大小次序擺好