bit.h
#ifndef _bit_h_
#define _bit_h_
/** *儲存bitmap的結構體
*儲存的順序從左至右
**/struct _bits;
typedef struct _bits *bits;
/** *獲得bitmap
*@length bitmap的長度
*@return 所有位都初始化為0的bitmap
*/bits bit_new(unsigned int length);
/** *銷毀乙個bitmap
**/void bit_destroy(bits bit);
/** *獲得y乙個bitmap的長度
*@bit 需要獲得長度的bitmap
*@return bit的長度
**/unsigned int bit_length(bits bit);
/** *設定bitmap中相應位置的值
*@bit 待設定的bitmap
*@pos 需要設定的位置
**/void bit_set(bits bit, unsigned int pos, unsigned char value);
/** *設定bitmap中相應位置的值
*@bit 待獲取的bitmap
*@pos 獲取的位置
**/char bit_get(bits bit, unsigned int pos);
#endif /*_bits_h_*/
bit.c
#include "bit.h"
#include #include #include struct _bits ;
bits bit_new(unsigned int length)
memset(new_bits->bits, 0, char_nums);
new_bits->length = length;
return new_bits;
}void bit_destroy(bits bit)
unsigned int bit_length(bits bit)
void bit_set(bits bit, unsigned int pos, unsigned char value)
else
}char bit_get(bits bit, unsigned int pos)
main.c
#include #include "bit.h"
#define len 15
int main(void)
for (i = 0; i < len; i++)
printf("\n");
bit_destroy(bit);
return 0;
}
Go語言實現bitmap演算法
有關bitmap演算法的介紹資料網上很多,這裡不贅述,各種語言的實現也不少,但是go語言版的bitmap不多,本文就來寫乙個go版的bitmap實現。首先建立乙個 bitmap.go 檔案,定義乙個bitmap結構體,再提供一些操作方法。詳細 如下 package bitmap import fmt...
C語言實現memcpy
memcpy和memmove都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,他們的作用是一樣的,唯一的區別是,當記憶體發生區域性重疊 的時候,memmove保證拷貝的結果是正確的,memcpy不保證拷貝的結果的正確。程式設計師面試寶典中有例題 對應的原型如下 v...
C語言實現多型
c 中的多型是指 通過基類物件的指標或者基類物件的引用呼叫虛函式 表現更多派生類的特性,但根據c 多型的實現,我們發現這種方法存在一定的空間和效率的折損。不可否認,多型輕鬆解決了很多任務程中遇到的問題,這與 pure c 的解決方法比起來,更為優雅。在考慮移植性上,c 的光芒要蓋過 c 但 c 的多...