多功能鍊錶

2021-05-28 08:21:19 字數 1849 閱讀 7729

//此鍊錶具有stringbuffer, hashtab, list, vector 的功能

#ifndef _list_

#define _list_

#include "stdbool.h"

struct item

;struct list

;#define push_fl_empty 0

#define push_fl_data 1

#define push_fl_hash 2

#define push_fl_all push_fl_data|push_fl_hash

#define init_list(plist) memset(plist,0,sizeof(struct list))

void push_list(struct list *plist, void *pdata, unsigned int size, unsigned int flag); //將p指向的size個位元組資料存入鍊錶

void clear_list(struct list *plist); //清除鍊錶

void pop_list(struct list *plist); //彈出最後乙個節點資料

void *compress_list(struct list *plist); //將鍊錶壓縮為資料流

#endif //(_list_)

#include #include #include "list.h"

// bkdr hash function

unsigned int bkdrhash(char *str, unsigned int len)

else

if (flag&push_fl_hash)

else

pitem->next=0;

pitem->last=0;

if (plist->head==0)

else if (plist->end)

plist->end=pitem;

plist->length+=pitem->size;

plist->items++;

}}//從煉表裡尋找

int find_item(struct list *plist, void *pdata, unsigned int size)

else if (strncmp((const char *)pitem->data,(const char *)pdata,size)==0)

pitem=pitem->next; i++;

}return -1;

}void clear_list(struct list *plist)

plist->end=plist->head=0;

}void pop_list(struct list *plist)

void * compress_list(struct list *plist)

//釋放當前節點記憶體

free(pitem);

pitem=next;

}*pdata=0;

plist->head=pnew;

return pnew->data;

}return 0;

}//#include /*

int main(int argc, char **argv)

if (find_item(&l,temp,10)==-1)

}printf("items:%d length:%d\n", l.items, l.length);

clear_list(&l);

return 0;

}*/

多功能閥知識

何謂多功能水幫浦控制閥?水幫浦有什麼執行特性需要閥門來控制?水幫浦控制閥能否實現這些控制?以及它與傳統的閘閥 蝶閥 止回閥以及勻速 雙速緩閉 的水力控制止回閥在原理 功能等方面有什麼質的不同,筆者在本文中以活塞式多功能水幫浦控 制閥 下稱控制閥 為例,通過對其結構 主要功能 工作原理的剖析,提出對上...

多功能標籤CLabelEx

多功能標籤clabelex 引言 做使用者介面的時候經常要用到一些靜態文字控制項,顯示一些文字資訊,但是 mfc 提供的 cstatic類的功能過於簡單,無法滿足高階需求。為此我從 cstatic 派生了乙個類 clabelex,擴充套件了cstatic。第一次投稿,水平不足請大家見諒。我從 vck...

多功能輸入法

多功能輸入法 前端介面模組設計與實現 摘要隨著輸入法的發展,輸入法的外觀變得越來越美麗。由於使用者的使用習慣各不相同,為了滿足大多數的人的使用習慣,輸入法發展了新的方式,這方式不但增強了輸入法前端介面,而且憑藉photoshop的強大影象處理技術,為輸入法外觀增添了很多元素。本 主要介紹狀態視窗 編...