⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list.h

📁 网页抓取程序
💻 H
字号:
/* OpenWebSpider* *  Authors:     Stefano Alimonti AND Stefano Fantin *  Version:     0.7 *  E-Mails:     shen139 [at] openwebspider (dot) org AND stefanofantinguz@yahoo.it*** This file is part of OpenWebSpider** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA**/#ifndef __LIST#define __LISTint lstInited = 0;int lstFreeAll(NODE* first){	NODE* cur = first;	NODE* tmp;	lstInited = 0;		lstInited=0;		if(first==NULL)		return 1;		if(cur->field == NULL && cur->next == NULL)	{		return 1;	}		while(cur != NULL)	{		tmp=cur->next;				if(cur->field!=NULL)			free(cur->field);				if(cur!=NULL)			free(cur);				//FREE(cur->field);		//FREE(cur);		cur=tmp;	}		return 1;}NODE* lstGetNodeX(NODE* first, int x){	NODE* cur = first;		thrdBlock(BLOCKTHRDHST);	while(cur != NULL && x>0)	//to correct in do while	{		x--;		cur=cur->next;	}	thrdUnBlock(BLOCKTHRDHST);		return (x==0) ? cur : NULL;}NODE* lstGetLastNode(NODE* first, int* NumOfNodes){	NODE* cur = first;		if(lstInited == 0)		return NULL;		if(NumOfNodes!=NULL)		*NumOfNodes=0;		while(cur->next != NULL)	{		if(NumOfNodes!=NULL)			(*NumOfNodes)++;				cur=cur->next;	}		return cur;}/********************************************************************************************/INVERTED_INDEX* InitII(){	INVERTED_INDEX* first=malloc(sizeof(INVERTED_INDEX));		first->doc_id = 0;	first->position = 0;	first->next = NULL;	first->last = first;		return first;}OOI_NODE* InitLexicon(){	OOI_NODE* first=malloc(sizeof(OOI_NODE)*LEXICONWORDSIZE);		memset(first,0,sizeof(OOI_NODE)*LEXICONWORDSIZE);	lexicon_number_of_elements = 0;	lexicon_actual_size = LEXICONWORDSIZE;		return first;}#define swap(n1, n2)			\{								\	OOI_NODE tmp;				\								\	tmp.id = n1.id;				\	tmp.field = n1.field;		\	tmp.ii = n1.ii;				\								\	n1.id = n2.id;				\	n1.field = n2.field;		\	n1.ii = n2.ii;				\								\	n2.id = tmp.id;				\	n2.field = tmp.field;		\	n2.ii = tmp.ii;				\								\}								\	void insertion_sort(OOI_NODE* lexicon, int n) {    int i, j;	char* app;	    for (i=1; i<n; i++) {        app = lexicon[i].field;		        j = i-1;        while ((j>=0) && (strcmp(lexicon[j].field, app)>0)) 		{			swap(lexicon[j+1],lexicon[j]);            j--;        }		        lexicon[j+1].field = app;    }	}/*int compare(char* p1, char* p2){return strcmp (p1, p2);}int comp(OOI_NODE * a, OOI_NODE* b){return strcmp(a->field,b->field);}*/int lstAddWord(OOI_NODE** lexicon,char* word){	OOI_NODE* cur;		if(lexicon_number_of_elements+1 >= lexicon_actual_size)	{		lexicon_actual_size = lexicon_actual_size + 100;		*lexicon = realloc((OOI_NODE*)*lexicon, sizeof(OOI_NODE)*lexicon_actual_size);	}		cur = *lexicon;		cur[lexicon_number_of_elements].id = lexicon_number_of_elements+1;	cur[lexicon_number_of_elements].field = (char*)malloc(strlen(word)+1);	strcpy(cur[lexicon_number_of_elements].field, word);		cur[lexicon_number_of_elements].ii = InitII();		lexicon_number_of_elements++;		insertion_sort (*lexicon, lexicon_number_of_elements);		/* qsort(*lexicon, number_of_elements,sizeof(OOI_NODE),comp); */		return 1;}int ndzLookForWord(OOI_NODE* lexicon, char* word){	unsigned int m;	int p, u;	p = 0;	u = lexicon_number_of_elements-1;	while(p<u)	{		m = (p+u)/2;		if(lexicon[m].id>0 &&			strcmp(lexicon[m].field,word)<0)			p = m+1;		else			u = m;	}		if(u>=0 && lexicon[u].id>0 &&		strcmp(lexicon[u].field,word)==0)		return u;	else		return -1;	}void FreeOwsIndex(OOI_NODE* lexicon){	unsigned int i;	INVERTED_INDEX* ii;	INVERTED_INDEX* cur;		for(i=0; i < lexicon_number_of_elements; i++)	{		ii = lexicon[i].ii;		while(ii != NULL)		{			cur = ii->next;			FREE(ii)			ii = cur;		}	}	FREE(lexicon)}#endif/*EOF*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -