亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 哈希表.cpp

?? 實現哈希表的建立 查找 刪除 插入 數據結構初學者參考
?? CPP
字號:
#include<stdio.h>
#include<iostream>
#include<conio.h>

using namespace std;

#define HASH_LEN 50                      //哈希表的長度         
#define M 47                            //隨機數
int NAME_NO=34;                     //城市名的個數        

typedef struct      
{
	char *py;    //名字的拼音
	int k;       //拼音所對應的整數
}NAME;

NAME NameList[HASH_LEN];    //全局變量NAME             

typedef struct    //哈希表
{
	char *py;   //名字的拼音
	int k;      //拼音所對應的整數
	int si;     //查找長度
}HASH;

HASH HashList[HASH_LEN];        //全局變量HASH                     

void InitNameList() //姓名(結構體數組)初始化          
{
	char *f;
	int r,s0,i;
	NameList[0].py="harbin";
	NameList[1].py="shijiazhuang";
	NameList[2].py="lanzhou";
	NameList[3].py="kunming";
	NameList[4].py="chengdu";
	NameList[5].py="changchun";
	NameList[6].py="shenyang";
	NameList[7].py="xining";
	NameList[8].py="xian";
	NameList[9].py="zhengzhou";
	NameList[10].py="jinan";
	NameList[11].py="taiyuan";
    NameList[12].py="hefei";
    NameList[13].py="wuhan";
    NameList[14].py="changsha";
    NameList[15].py="nanjing";
    NameList[16].py="guiyang";
    NameList[17].py="nanning";
    NameList[18].py="hangzhou";
    NameList[19].py="nanchang";
    NameList[20].py="guangzhou";
    NameList[21].py="fuzhou";
    NameList[22].py="taipei";
    NameList[23].py="haikou";
    NameList[24].py="huhhot";
    NameList[25].py="yinchuan";
    NameList[26].py="urumqi";
    NameList[27].py="lahsa";
    NameList[28].py="macau";
    NameList[29].py="beijing";
    NameList[30].py="shanghai";
    NameList[31].py="hongkong";
    NameList[32].py="tianjin";
    NameList[33].py="chongqing";
	for (i=0;i<NAME_NO;i++)
	{
		s0=0;
		f=NameList[i].py;
		for (r=0;*(f+r)!='\0';r++)
			/* 方法:將字符串的各個字符所對應的ASCII碼相加,所得的整數做為哈希表的關鍵字*/
			s0=*(f+r)+s0;
		NameList[i].k=s0;
	} 
}

void CreateHashList() //建立哈希表   
{
	int i;
    for (i=0; i<HASH_LEN;i++) 
	{
		HashList[i].py="";
		HashList[i].k=0;
		HashList[i].si=0;
	}
	for (i=0;i<HASH_LEN;i++)
	{
		int sum=0;
		int adr=(NameList[i].k)%M;  //哈希函數
		int d=adr;
		if(HashList[adr].si==0)     //如果不沖突
		{
			HashList[adr].k=NameList[i].k;
			HashList[adr].py=NameList[i].py;
			HashList[adr].si=1;
		}
		else   //沖突  
		{
			do
			{
				d=(d+NameList[i].k%10+1)%M;   //偽隨機探測再散列法處理沖突    
				sum=sum+1;   //查找次數加1    
			}while (HashList[d].k!=0);
			HashList[d].k=NameList[i].k;
            HashList[d].py=NameList[i].py;
			HashList[d].si=sum+1;
		}
	}
}

int  FindList() //查找    

{  

       char name[20]={0}; 
	   int s0=0,r,sum=1,adr,d;
	   printf("\n請輸入城市名稱:");     
	   scanf("%s",name); 
	   for (r=0;r<20;r++)   //求出姓名的拼音所對應的整數(關鍵字)
		   s0+=name[r]; 
	   adr=s0%M;   //使用哈希函數
	   d=adr;
	   if(HashList[adr].k==s0)          //分3種情況進行判斷
	   {
		   printf("\n名稱:%s   關鍵字:%d   查找長度為: 1",HashList[d].py,s0); 
           cout<<endl;
           return 0;
	   }
       else if (HashList[adr].k==0) 
	   {
		   printf("無此記錄!");
           cout<<endl;
           return 1;
	   }
       else
	   {
		   int g=0;
		   do
		   {
			   d=(d+s0%10+1)%M;       //偽隨機探測再散列法處理沖突                     
			   sum=sum+1;
			   if (HashList[d].k==0)
			   {
				   printf("無此記錄! ");  
                   cout<<endl;
                   g=1;     
                   return 1;
			   }
			   if (HashList[d].k==s0)
			   {    
				   printf("\n名稱:%s   關鍵字:%d   查找長度為:%d",HashList[d].py,s0,sum); 
                   cout<<endl;
                   g=1;  
                   return 0;
			   }
		   }while(g==0);   
	   }
}

void   Display() // 顯示哈希表       
{
	int i;
	float average=0;
	for(i=0; i<HASH_LEN; i++)
	{
		if(HashList[i].k%M==0) 
		HashList[i].py="";
	}
	printf("\n\n地址\t關鍵字\t\t搜索長度\tH(key)\t 名稱\n"); //顯示的格式
	for(i=0; i<HASH_LEN; i++)
	{
		printf("%d ",i);
		printf("\t%d ",HashList[i].k);
		printf("\t\t%d ",HashList[i].si);
		printf("\t\t%d ",HashList[i].k%M);
		printf("\t %s ",HashList[i].py);
		//cout<<"      "<<HashList[i].py<<endl;
		printf("\n");  
		//cout<<i<<"         "<<HashList[i].k<<"             "<<HashList[i].si<<"             "<<HashList[i].k%M<<"         "<<HashList[i].py<<endl;
	}
	for (i=0;i<HASH_LEN;i++)
		average+=HashList[i].si; 
	average/=NAME_NO;
	printf("\n\n平均查找長度:ASL(%d)=%f \n\n",NAME_NO,average); 
}

void DeleteList()
{
	char name[20]={0}; 
	int s0=0,r,sum=1,adr,d;
	printf("\n請輸入城市名稱:");     
	scanf("%s",name); 
	for (r=0;r<20;r++)   //求出姓名的拼音所對應的整數(關鍵字)
		s0+=name[r]; 
	adr=s0%M;   //使用哈希函數
	d=adr;
	if(HashList[adr].k==s0)          //分3種情況進行判斷
	{
		printf("\n名稱:%s   關鍵字:%d   查找長度為: 1",HashList[d].py,s0);
	    cout<<endl;
		cout<<"刪除成功!"<<endl;
        s0=0;
	    HashList[d].py="";   //名字的拼音
	    HashList[d].k=0;      //拼音所對應的整數
	    HashList[d].si=0;
	}
	else if (HashList[adr].k==0) 
		printf("無此記錄!無法執行刪除操作!");
	else
	{
		int g=0;
		do
		{
			d=(d+s0%10+1)%M;       //偽隨機探測再散列法處理沖突                     
			sum=sum+1;
			if (HashList[d].k==0)
			{
				printf("無此記錄!無法執行刪除操作!");  
				g=1;     
			}
			if (HashList[d].k==s0)
			{    
				printf("\n名稱:%s   關鍵字:%d   查找長度為:%d",HashList[d].py,s0,sum); 
				cout<<endl;
				cout<<"已刪除成功!"<<endl;
                s0=0;
	            HashList[d].py="";   //名字的拼音
	            HashList[d].k=0;      //拼音所對應的整數
	            HashList[d].si=0;
				//Display();
				g=1;  
			}
		}while(g==0);   
	}
}

void EnterList()
{
	 /*char name[20]={0}; 
	 int s0=0,r,sum=1,adr,d,h;
	 printf("\n請輸入姓名的拼音:");     
	 scanf("%s",name); 
	 for (r=0;r<20;r++)   //求出姓名的拼音所對應的整數(關鍵字)
		 s0+=name[r];*/
	 char st[20];
	 char *xin;
	 xin=st;
	 int s0=0,r,sum=1,adr,d,h;
	 printf("\n請輸入城市名稱的拼音:");
	 cin>>xin;
	 //cout<<xin<<endl;
	 for (r=0;*(xin+r)!='\0';r++)
	 {
		 /* 方法:將字符串的各個字符所對應的ASCII碼相加,所得的整數做為哈希表的關鍵字*/
		 s0=(int)(*(xin+r))+s0;
	 }
	 //cout<<s0<<endl;
	 adr=s0%M;   //使用哈希函數
	 d=adr;
	 if(HashList[adr].k==s0)          //分3種情況進行判斷
	 {
		 printf("\n名稱:%s   關鍵字:%d   查找長度為: 1",HashList[d].py,s0);
		 cout<<endl;
		 cout<<"已存在于表中,無需插入!"<<endl;
      }
     else if (HashList[d].k==0) 
	 {
		 printf("插入成功!");
		 HashList[d].py=xin;
		 HashList[d].k=s0;
		 HashList[d].si=1;
		 h=1;
		 cout<<endl;
      }
	 else
	 {
		 int g=0,h=0;
		 do
		 {
			 d=(d+s0%10+1)%M;       //偽隨機探測再散列法處理沖突                     
			 sum=sum+1;
			 if (HashList[d].k==0)
			 {
				 printf("插入成功!");
				 HashList[d].py=xin;
		         HashList[d].k=s0;
		         HashList[d].si=sum;
				 h=1;
                 cout<<endl;
                 g=1;     
			 }
			 if (HashList[d].k==s0)
			 {    
				 printf("\n名稱:%s   關鍵字:%d   查找長度為:%d",HashList[d].py,s0,sum);
				 cout<<endl;
				 cout<<"已存在于表中,無需插入!"<<endl;
                 g=1;  
              }
		 }while(g==0);   
	 }
	 if(h==0)
		 return;
	 else
	 {
		 NAME_NO++;
		 NameList[NAME_NO-1].py=xin;
         int sum=0;
		 int adr=(NameList[NAME_NO-1].k)%M;  //哈希函數
		 int d=adr;
		 if(HashList[adr].si==0)     //如果不沖突
		 {
			 HashList[adr].k=NameList[NAME_NO-1].k;
			 HashList[adr].py=NameList[NAME_NO-1].py;
			 HashList[adr].si=1;
		 }
		 else   //沖突  
		 {
			 do
			 {
				 d=(d+NameList[NAME_NO-1].k%10+1)%M;   //偽隨機探測再散列法處理沖突    
				 sum=sum+1;   //查找次數加1    
			 }while (HashList[d].k!=0);
			 HashList[d].k=NameList[NAME_NO-1].k;
             HashList[d].py=NameList[NAME_NO-1].py;
			 HashList[d].si=sum+1;
		 }
	 }
}


void main()

{
	char ch1;
	printf("\n                                哈希表\n");
	printf("               *-------------------------------------------*\n"); 
	printf("               |              D. 顯示哈希表                |\n"); 
	printf("               |              F. 查找                      |\n");
	printf("               |              S. 刪除                      |\n");
	printf("               |              E. 插入                      |\n");
	printf("               |              Q. 退出                      |\n");
	printf("               *-------------------------------------------*\n"); 
	InitNameList();                                
	CreateHashList ();                        
	while(1)
	{
		printf("\n       Option-:");
		fflush(stdin);
		ch1=getchar();
		if (ch1=='D'||ch1=='d')  
			Display();   
		else if (ch1=='F'||ch1=='f') 
			FindList();
        else if (ch1=='S'||ch1=='s')
			DeleteList();
		else if (ch1=='E'||ch1=='e')
			EnterList();
		else if (ch1=='Q'||ch1=='q') 
			return;
		else 
		{ 
			printf("\n請輸入正確的選擇!"); 
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品乱码av一区二区| 色综合久久久久网| 亚洲一区在线播放| 日韩理论片中文av| 国产精品乱人伦一区二区| 一二三区精品福利视频| 中文av字幕一区| 国产免费观看久久| 国产精品第四页| 自拍偷拍国产精品| 亚洲综合色视频| 亚洲第一在线综合网站| 天堂va蜜桃一区二区三区漫画版| 亚洲制服丝袜一区| 日韩国产欧美在线视频| 秋霞av亚洲一区二区三| 极品尤物av久久免费看| 国产精品一区二区在线观看不卡| 国产iv一区二区三区| 不卡的电影网站| 在线精品视频一区二区三四| 制服丝袜激情欧洲亚洲| 精品成人免费观看| 18成人在线观看| 亚洲国产欧美在线人成| 奇米888四色在线精品| 国产精品综合一区二区三区| 91麻豆视频网站| 欧美一区二区视频网站| 国产亚洲欧洲一区高清在线观看| 久久久久国产免费免费| 从欧美一区二区三区| 亚洲精品一区二区三区四区高清| 99精品久久只有精品| 欧美日精品一区视频| 日韩免费视频一区| 国产精品久久精品日日| 亚洲国产精品久久久久秋霞影院 | 亚洲成av人综合在线观看| 日韩精品亚洲一区二区三区免费| 国产99久久久国产精品潘金 | 久久国产精品99精品国产| 成人av在线资源| 欧美一区二区三区啪啪| 国产精品乱子久久久久| 天天综合网天天综合色| 成人精品视频一区二区三区尤物| 欧美日韩免费在线视频| 国产精品污www在线观看| 亚洲老妇xxxxxx| 久久这里只有精品首页| 国产精品区一区二区三区| 91在线观看下载| 国产精品一区免费视频| 成人国产精品视频| 日韩一区二区不卡| 亚洲精品国产一区二区三区四区在线| 午夜精品免费在线观看| 97精品电影院| 国产日韩精品一区二区浪潮av | 99r精品视频| 精品国产一区二区在线观看| 天天做天天摸天天爽国产一区| 99久久亚洲一区二区三区青草| 亚洲精品一区二区三区影院 | 高清视频一区二区| 午夜精品久久久久| av一区二区三区四区| 亚洲精品在线一区二区| 亚洲午夜免费视频| 99精品视频一区二区| 国产欧美日韩在线观看| 精品一二三四区| 精品欧美一区二区在线观看 | 日韩视频在线一区二区| 天天色图综合网| 欧美久久一二区| 亚洲国产三级在线| 欧美精品久久天天躁| 天堂av在线一区| 日韩女优视频免费观看| 九色综合国产一区二区三区| 日韩一区二区三区免费看 | 欧美日韩精品一区二区三区| 一区二区三区四区激情| 日本丰满少妇一区二区三区| 亚洲精品成人少妇| 欧美日韩欧美一区二区| 欧美a级理论片| 久久精品人人做人人爽人人| 丰满少妇久久久久久久| 亚洲三级免费观看| 欧美日韩免费电影| 免费成人在线网站| 欧美激情中文字幕| 色激情天天射综合网| 偷拍一区二区三区| 久久夜色精品国产噜噜av | 中文字幕中文字幕在线一区| 在线欧美日韩国产| 亚洲精品久久久蜜桃| 欧美日韩午夜在线| 久久99精品国产麻豆婷婷| 久久久三级国产网站| 色婷婷久久久综合中文字幕 | 亚洲成a天堂v人片| 精品福利一区二区三区| 不卡视频一二三四| 日韩激情在线观看| 国产精品免费久久久久| 欧美日本韩国一区| 成人动漫中文字幕| 日韩福利视频导航| 国产精品青草久久| 91麻豆精品国产自产在线观看一区| 精品亚洲免费视频| 亚洲黄色在线视频| 久久日韩粉嫩一区二区三区| a4yy欧美一区二区三区| 美女视频黄a大片欧美| 亚洲三级视频在线观看| 精品国产网站在线观看| 欧美色视频一区| 懂色av一区二区夜夜嗨| 日本午夜精品视频在线观看| 中文字幕在线观看不卡| 欧美成人一级视频| 欧美日韩国产综合一区二区| 成人福利电影精品一区二区在线观看| 午夜影视日本亚洲欧洲精品| 综合激情成人伊人| 久久久精品免费观看| 欧美一区三区四区| 欧美日韩中文一区| 色综合网站在线| 99视频超级精品| 国产精品123| 韩国av一区二区三区| 日韩一区精品视频| 亚洲国产精品久久不卡毛片| 国产精品久久久久一区二区三区 | 日本不卡1234视频| 一区二区成人在线视频| 国产精品免费视频一区| 久久女同性恋中文字幕| 精品入口麻豆88视频| 国产精品久线观看视频| 亚洲久草在线视频| 3d动漫精品啪啪| 欧美日韩中文另类| 91久久久免费一区二区| 99麻豆久久久国产精品免费| 丁香婷婷综合色啪| 成人美女视频在线观看| 国产99精品视频| 成人午夜av在线| 成人一区二区三区视频在线观看| 国产美女在线精品| 国产成人啪免费观看软件| 国产99久久久国产精品潘金| 国产成人精品免费一区二区| 成人国产电影网| 日本高清无吗v一区| 欧美蜜桃一区二区三区| 国产福利一区二区| 91久久精品日日躁夜夜躁欧美| 成人福利电影精品一区二区在线观看 | 国产精品亲子乱子伦xxxx裸| 国产精品成人免费在线| 久久亚区不卡日本| 亚洲男人的天堂av| 亚洲综合999| 欧美精品tushy高清| 欧美剧在线免费观看网站| 在线综合亚洲欧美在线视频| 欧美大片在线观看| 久久久久国产精品厨房| 亚洲欧美综合色| 午夜免费久久看| 国产精品一区三区| 一本大道久久a久久精二百| 欧美日韩国产色站一区二区三区| 精品乱人伦一区二区三区| 中文字幕欧美国产| 亚洲成人在线观看视频| 国产乱码一区二区三区| 91丨porny丨中文| 欧美大胆一级视频| 亚洲人精品午夜| 久久草av在线| 粉嫩高潮美女一区二区三区| 国产亚洲女人久久久久毛片| 欧美日韩一区二区欧美激情| 久久精品一区二区三区不卡牛牛 | 青青草97国产精品免费观看| 懂色av噜噜一区二区三区av | 国产一区二区三区免费在线观看| 国产成人综合精品三级| 欧美在线你懂的| 国产目拍亚洲精品99久久精品|