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

📄 hashchainsearch.c

📁 一个用在mips体系结构中的操作系统
💻 C
字号:
/*  * HashChainSearch.c -- * *	Source code for HashChainSearch, a utility procedure used by *	the hash table library. * * Copyright 1988 Regents of the University of California * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies.  The University of California * makes no representations about the suitability of this * software for any purpose.  It is provided "as is" without * express or implied warranty. */#ifndef lintstatic char rcsid[] = "$Header: /hive/cvsroot/simulation/apps/unix/ethersim/common/HashChainSearch.c,v 1.2 1996/08/28 00:09:13 verghese Exp $ SPRITE (Berkeley)";#endif not lint#include "hash.h"#include "list.h"#include <string.h>#ifdef sgi#include <bstring.h>#elif sparc#include <strings.h>#endif/* *--------------------------------------------------------- * * HashChainSearch -- * * 	Search the hash table for the entry in the hash chain. * * Results: *	Pointer to entry in hash chain, NULL if none found. * * Side Effects: *	None. * *--------------------------------------------------------- */Hash_Entry *HashChainSearch(    Hash_Table 		*tablePtr,	/* Hash table to search. */    register Address	key,	/* A hash key. */    register List_Links *hashList){    register Hash_Entry *hashEntryPtr;    register int 	*hashKeyPtr;    int 		*keyPtr;    register int	numKeys;    numKeys = tablePtr->keyType;    LIST_FORALL(hashList, (List_Links *) hashEntryPtr) {	switch (numKeys) {	    case 0:		if (strcmp(hashEntryPtr->key.name, key) == 0) {		    return(hashEntryPtr);		}		break;	    case 1:		if (hashEntryPtr->key.ptr == key) {		    return(hashEntryPtr);		}		break;	    case 2:		hashKeyPtr = hashEntryPtr->key.words;		keyPtr = (int *) key;		if (*hashKeyPtr++ == *keyPtr++ && *hashKeyPtr == *keyPtr) {		    return(hashEntryPtr);		}		break;	    default:		if (!bcmp((char *) hashEntryPtr->key.words,			    (char *) key, numKeys * sizeof(int))) {		    return(hashEntryPtr);		}		break;	}    }    /*      * The desired entry isn't there      */    return ((Hash_Entry *) NULL);}

⌨️ 快捷键说明

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