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

📄 hash.c

📁 一个用在mips体系结构中的操作系统
💻 C
字号:
/*  * Hash.c -- * *	Source code for Hash, 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/Hash.c,v 1.1 1996/08/27 18:49:20 verghese Exp $ SPRITE (Berkeley)";#endif not lint#include "hash.h"#include "list.h"/* *--------------------------------------------------------- * * Hash -- *	This is a local procedure to compute a hash table *	bucket address based on a string value. * * Results: *	The return value is an integer between 0 and size - 1. * * Side Effects:	 *	None. * * Design: *	It is expected that most keys are decimal numbers, *	so the algorithm behaves accordingly.  The randomizing *	code is stolen straight from the rand library routine. * *--------------------------------------------------------- */intHash(    register Hash_Table *tablePtr,    register char 	*key){    register int 	i = 0;    register int 	j;    register int 	*intPtr;    switch (tablePtr->keyType) {	case HASH_STRING_KEYS:	    while (*key != 0) {		i = (i * 10) + (*key++ - '0');	    }	    break;	case HASH_ONE_WORD_KEYS:	    i = (int) key;	    break;	case 2:	    i = ((int *) key)[0] + ((int *) key)[1];	    break;	default:	    j = tablePtr->keyType;	    intPtr = (int *) key;	    do { 		i += *intPtr++; 		j--;	    } while (j > 0);	    break;    }    return(((i*1103515245 + 12345) >> tablePtr->downShift) & tablePtr->mask);}

⌨️ 快捷键说明

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