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

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

?? classify.c

?? 專家系統
?? C
字號:
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct SUBLINK

{

	int index;
	
	struct SUBLINK *next;

}sublink;

struct NODE

{

	char feature[20];
	
	int upnnum;
	
	struct SUBLINK *upnode;
	
	int fullfill;
	
	int type;
	
	int state;
	
	int sonnum;
	
	struct SUBLINK *sonnode;

}node;

#define MAXNUM 1000

struct NODE *nodelink[MAXNUM];

int nodenum;

void initiate();

void quarry();

void modify();

int extend(struct NODE *ntx);

int showfault() ;

void store();

void main()

{

	int flag;
	
	initiate();
	
	for(;;)
	
	{
	
		printf("\n\t請選擇操作:\n\n\t1、查詢;\n\n\t2、添加新知識;\n\n\t3、退出程序.\n\n\t");
		
		scanf("%d",&flag);
		
		switch(flag)
		
		{
		
		case 1:
		
			quarry();
			
			break;
		
		case 2:
		
			modify();
			
			break;
		
		case 3:
		
			store();
		
		default:
		
			printf("\n輸入錯誤,請重新輸入\n");
		
		}
	
	}

}



void initiate()//初始化

{

	int i , j;
	
	char s[10];
	
	FILE *kf;
	
	struct NODE *newnode;
	
	struct SUBLINK *newlink , *oldlink;
	
	if((kf = fopen("knowledgestore.txt" , "r")) == NULL)
	
	{
	
		printf("Cannot create/open file");
		
		exit(1);
	
	}
	
	fscanf(kf , "%5d" , &nodenum);
	
	for(i=0 ; i < nodenum ; i++)
	
	{
	
		newnode = (struct NODE*)malloc (sizeof(node));
		
		if(newnode == NULL)
		
		{
		
			printf("\n內存不夠!\n");
			
			exit(0);
		
		}
		
		fscanf(kf , "%20s" , newnode->feature);
		
		fscanf(kf , "%5d" , &newnode->upnnum);
		
		for(j=0 ; j<newnode->upnnum ; j++)
		
		{
		
			newlink = (struct SUBLINK*) malloc (sizeof(sublink));
			
			if(newlink == NULL)
			
			{
			
				printf("\n內存不夠!\n");
				
				exit(0);
			
			}
			
			fscanf(kf , "%5d" , &newlink->index);
			
			if(j == 0)
			
				newnode->upnode = oldlink = newlink;
			
			newlink->next = NULL;
			
			oldlink->next = newlink;
			
			oldlink = newlink;
		
		}
		
		newnode->fullfill = 0;
		
		newnode->state = 0;
		
		fscanf(kf , "%5d" , &newnode->type);
		
		fscanf(kf , "%5d" , &newnode->sonnum);
		
		for(j=0 ; j < newnode->sonnum ; j++)
		
		{
		
			newlink = (struct SUBLINK*)malloc(sizeof(sublink));
			
			if(newlink == NULL)
			
			{
			
				printf("\n內存不夠!\n");
				
				exit(0);
			
			}
			
			fscanf(kf , "%5d" , &newlink->index);
			
			if(j == 0)
			
				newnode->sonnode = oldlink = newlink;
			
			newlink->next = NULL;
			
			oldlink->next = newlink;
			
			oldlink = newlink;
		
		}
		
		nodelink[i] = newnode;	
	
	}
	
	fscanf(kf , "%10s" , s);
	
	if(strcmp(s , "end") != 0)
	
	{
	
		printf("\n程序初始化失敗!");
		
		exit(0);
	
	}	

}



void quarry()

{

	struct NODE *ntx;
	
	char feature[100];
	
	int i , flag;
	
	for(;;)
	
	{
	
		flag = 0;
		
		printf("\n請輸入動物的特征:");
		
		scanf("%s" , feature);
		
		for(i = 0 ; i < nodenum ; i++)
		
		{
		
			ntx = nodelink[i];
			
			if(strstr(feature,ntx->feature) != NULL)
			
			{
			
				ntx->state = 1;
				
				flag = extend(ntx);				
			
			}
		
		}		
		
		if(flag >= 1)
		
		{
		
			for(i = 0 ; i < nodenum ; i++)
			
			{
			
				nodelink[i]->fullfill = 0;
				
				nodelink[i]->state = 0;				
			
			}
			
			break;
		
		}
		
		if(flag == 0)
		
			if(showfault() == 0)break;
	
	}

}

int extend(struct NODE *ntx)

{

	int i , index;
	
	int flag;
	
	struct NODE *nextone;
	
	struct SUBLINK *son;
	
	if(ntx->sonnum == 0)
	
	{
	
		printf("\n結果為%20s\n" , ntx->feature);
		
		return 1;
	
	}
	
	son = ntx->sonnode;
	
	flag = 0;
	
	for(i = 0 ; i < (ntx->sonnum) ; i++)
	
	{
	
		index = son->index;
		
		nextone = nodelink[index];
		
		if(nextone->type == 0)//或節點
		
		{
		
			if(nextone->state != 1)
			
			{
			
				nextone->state = 1;
				
				printf("\n表明具有%20s特征" , nextone->feature);
				
				flag += extend(nextone);
			
			}
		
		}
		
		else
		
		{
		
			nextone->fullfill++;
			
			if(nextone->fullfill == nextone->upnnum)
			
			{
			
				nextone->state = 1;
				
				printf("\n表明具有%20s特征" , nextone->feature);
				
				flag =+ extend(nextone);
			
			}
		
		}

		son = son->next;
	
	}
	
	return flag;

}



void modify()

{

	int i ;
	
	char choice , feature[100];
	
	struct NODE *ntx , *newnode;
	
	struct SUBLINK *endl , *newl;
	
	newnode = (struct NODE*)malloc(sizeof(node));
	
	if(newnode == NULL)
	
	{
	
		printf("\n內存不夠!\n");
		
		exit(0);
	
	}
	
	newnode->sonnum = 0;
	
	newnode->upnnum = 0;
	
	newnode->fullfill = 0;
	
	printf("\n請輸入新特征\n");
	
	scanf("%s",newnode->feature);
	
	printf("新特征類型:\n與節點(1),或節點(0)");
	
	scanf("%d" , &newnode->type);
	
	newnode->state = 0;
	
	newnode->fullfill = 0;
	
	for(;;)
	
	{
			
		printf("\n是否為葉節點?(Y/N)\n");
		
	    scanf("%s" , &choice);
		
		choice = toupper(choice);
		
		if(choice == 'N')
		
		{
		
			printf("\n請輸入新特征描述的對象\n");
			
			scanf("%s" , feature);
			
			for(i = 0 ; i < nodenum ; i++)
			
			{
			
				ntx = nodelink[i];
				
				if(strstr(feature,ntx->feature) != NULL)
				
				{
				
					newl = (struct SUBLINK*) malloc (sizeof(sublink));
					
					if(newl == NULL)
					
					{
					
						printf("\n內存不夠!\n");
						
						exit(0);
					
					}

					if(newnode->sonnum == 0)
					
						newnode->sonnode = endl = newl;
					
					newl->index = i;
					
					endl->next = newl;
					
					endl = newl;
					
					newl->next = NULL;
					
					newnode->sonnum++;
					
/////////////////////////////////將信息寫入子節點
					
					newl = (struct SUBLINK*) malloc (sizeof(sublink));

					if(newl == NULL)
					
					{
					
						printf("\n內存不夠!\n");
						
						exit(0);
					
					}

					if(ntx->upnnum == 0)
					
						ntx->upnode = endl = newl;
					
					newl->index = nodenum;
					
					newl->next = ntx->upnode;
					
					ntx->upnode = newl;
					
					ntx->upnnum++;
				
				}

			}
			
			break;
		
		}
		
		if(choice == 'Y')break;
	
	}
	
	for(;;)
	
	{
		
		printf("\n是否為頂點?(Y/N)\n");
		
		scanf("%s" , &choice);
		
		choice = toupper(choice);
		
		if(choice == 'N')
		
		{		
		
			printf("\n請輸入對新對象的描述\n");
			
			scanf("%s" , feature);
			
			for(i = 0 ; i < nodenum ; i++)
			
			{
			
				ntx = nodelink[i];
				
				if(strstr(feature , ntx->feature)!=NULL)
				
				{			
				
					newl = (struct SUBLINK*) malloc (sizeof(sublink));
					
					if(newl == NULL)
					
					{
					
						printf("\n內存不夠!\n");
						
						exit(0);
					
					}
					
					if(newnode->upnnum == 0)
					
						newnode->upnode = endl = newl;
					
					newl->index = i;
					
					endl->next = newl;
					
					endl = newl;
					
					newl->next = NULL;
					
					newnode->upnnum++;
		
///////////////////////////////將信息寫入父節點
					
					newl = (struct SUBLINK*) malloc (sizeof(sublink));
					
					if(newl == NULL)
					
					{
					
						printf("\n內存不夠!\n");
						
						exit(0);
					
					}
					
					if(ntx->sonnum == 0)
					
						ntx->sonnode = endl = newl;
					
					newl->index = nodenum;
					
					newl->next = ntx->sonnode;
					
					ntx->sonnode = newl;
					
					ntx->sonnum++;
				
				}

			}
		
			break;

		}

		
		if(choice == 'Y')break;
	
	}	
	
	nodelink[nodenum] = newnode;
	
	nodenum++;

}



void store()

{

	int i , j;	
	
	char s[10];
	
	FILE *kf;
	
	struct NODE *writenode;
	
	struct SUBLINK *newlink , *oldlink;
	
	if((kf = fopen("knowledgestore.txt" , "w")) == NULL)
	
	{
	
		printf("Cannot create/open file");
		
		exit(1);
	
	}

	fprintf(kf , "%5d" , nodenum);
	
	for(i = 0 ; i < nodenum ; i++)
	
	{
	
		writenode = nodelink[i];
		
		fprintf(kf , "%20s" , writenode->feature);
		
		fprintf(kf , "%5d" , writenode->upnnum);
		
		newlink = writenode->upnode;
		
		for(j = 0 ; j < writenode->upnnum ; j++)
		
		{
		
			fprintf(kf , "%5d" , newlink->index);
			
			oldlink = newlink;
			
			newlink = newlink->next;
			
			free(oldlink);
		
		}

		
		fprintf(kf , "%5d" , writenode->type);
		
		fprintf(kf , "%5d" , writenode->sonnum);
		
		newlink = writenode->sonnode;
		
		for(j = 0 ; j < writenode->sonnum ; j++)
		
		{
		
			fprintf(kf , "%5d" , newlink->index);
			
			oldlink = newlink;
			
			newlink = newlink->next;
			
			free(oldlink);
		
		}

		free(writenode);
	
	}

	strcpy(s , "end");
	
	fprintf(kf , "%10s" , s);
	
	fclose(kf);
	
	exit(0);

}



int showfault()

{

	char choice;
	
	for(;;)
	
	{
	
		printf("是否繼續?(Y/N)\n");
		
		scanf("%s" , &choice);
		
		while(choice == '10');
		
		choice = toupper(choice);
		
		if(choice == 'Y')return 1;
		
		if(choice == 'N')exit(0);
	
	}	

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品潘金网站| 久久香蕉国产线看观看99| 日本在线不卡视频| 视频在线观看一区二区三区| 亚洲素人一区二区| 欧美国产日韩a欧美在线观看| 精品国产乱码久久久久久浪潮| 成人国产精品免费| 欧美a一区二区| 蜜桃视频免费观看一区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲视频每日更新| 久久99精品国产| 激情亚洲综合在线| 国产成人a级片| 99视频一区二区三区| 91在线视频播放| 欧美日韩亚洲丝袜制服| 欧美精品国产精品| 日韩欧美第一区| 国产日韩欧美精品综合| 国产精品久久夜| 亚洲国产人成综合网站| 蜜桃av一区二区在线观看| 在线观看欧美精品| 亚洲精品午夜久久久| 久久五月婷婷丁香社区| 国产精品电影院| 精品一区二区三区久久| 3d动漫精品啪啪1区2区免费| 日韩精品一区二区三区四区视频| 亚洲一区二区av电影| 奇米在线7777在线精品| 欧美性极品少妇| 久久久美女艺术照精彩视频福利播放| 中文字幕欧美国产| 国产高清久久久| 国产日韩欧美不卡在线| 国产精品一二三四| 欧美日韩精品系列| 日本一区二区三区高清不卡 | 樱桃国产成人精品视频| 日本丰满少妇一区二区三区| 日韩午夜在线观看| 亚洲精品视频观看| 91久久精品一区二区| 亚洲制服丝袜一区| 欧美精品日日鲁夜夜添| 青草国产精品久久久久久| 精品裸体舞一区二区三区| 一区二区三区欧美久久| 日本成人中文字幕在线视频| 欧美精品精品一区| 青青草视频一区| 丝袜美腿亚洲综合| 欧美一二三四在线| 国产精品白丝av| 亚洲色欲色欲www| 欧美久久一区二区| 精品一区二区三区视频| 国产精品午夜在线| 久久9热精品视频| 欧美高清视频www夜色资源网| 日本欧美一区二区三区乱码| 久久久精品免费网站| 91网站最新地址| 中文字幕巨乱亚洲| 欧洲一区二区三区在线| 久久国产乱子精品免费女| 国产精品久久久久久久浪潮网站| 欧美性大战久久久久久久| 另类小说综合欧美亚洲| 国产精品传媒视频| 欧美一区二区三区在| 毛片av一区二区| 久久综合久久综合久久| 91首页免费视频| 蜜桃一区二区三区在线| 《视频一区视频二区| 成人中文字幕合集| 欧美极品少妇xxxxⅹ高跟鞋| 欧美性淫爽ww久久久久无| 精品制服美女丁香| 一区二区三区在线视频观看| www国产亚洲精品久久麻豆| 91在线高清观看| 欧洲另类一二三四区| 激情都市一区二区| 亚洲一区欧美一区| 国产日韩欧美麻豆| 欧美一区二区三区公司| 97se亚洲国产综合在线| 国产一区福利在线| 久久综合九色综合欧美98| 日本久久一区二区三区| 国产乱对白刺激视频不卡| 五月天视频一区| 精品乱人伦小说| 欧美精品v国产精品v日韩精品| 色综合视频在线观看| 一区二区三区免费观看| 日本一区二区视频在线| 精品福利一二区| 69堂成人精品免费视频| 色天天综合色天天久久| 91小视频在线| 91亚洲国产成人精品一区二区三| 黄网站免费久久| 久久99精品国产.久久久久久 | 精品国产伦一区二区三区观看体验| 欧美自拍偷拍午夜视频| 色综合久久久久| 一本色道综合亚洲| 91色porny| 色综合色狠狠综合色| 94-欧美-setu| 91蝌蚪porny九色| 91免费看视频| 日本韩国精品一区二区在线观看| 92国产精品观看| 色香蕉成人二区免费| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲国产精品久久人人爱| 一区二区国产视频| 亚洲综合免费观看高清完整版| 亚洲一区在线观看免费观看电影高清 | 色婷婷一区二区| 在线观看区一区二| 欧美美女网站色| 日韩久久免费av| 久久精品视频免费| 在线观看亚洲精品| 欧美久久久久久蜜桃| 欧美一级久久久| ww久久中文字幕| 亚洲欧美自拍偷拍色图| 国内成人免费视频| 国产精品99久久久| 91麻豆蜜桃一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 欧洲一区二区三区免费视频| 欧美福利电影网| 老汉av免费一区二区三区 | 一区二区三区四区乱视频| 一区二区三区四区精品在线视频| 婷婷久久综合九色综合伊人色| 美日韩一级片在线观看| 成人激情免费视频| 欧美图片一区二区三区| 精品少妇一区二区三区视频免付费 | 中日韩av电影| 亚洲国产aⅴ成人精品无吗| 看电视剧不卡顿的网站| av毛片久久久久**hd| 欧美精品视频www在线观看| 久久久一区二区| 一区二区三区国产精品| 久久99精品视频| 在线精品国精品国产尤物884a| 欧美成人艳星乳罩| 亚洲视频免费看| 国产精品综合视频| 欧美一区二区三区在线观看| 国产综合色在线视频区| 色综合一区二区| 国产精品自拍av| 色综合一区二区| 久久色视频免费观看| 国产成人综合在线| 欧美日韩国产123区| 亚洲国产精品精华液ab| 青椒成人免费视频| 色激情天天射综合网| 国产亚洲福利社区一区| 日韩精品国产欧美| 色婷婷av一区二区| 国产精品久久久久久久午夜片| 久久99精品国产麻豆婷婷 | 国产一区美女在线| 欧美无乱码久久久免费午夜一区| 亚洲国产经典视频| 狠狠色狠狠色合久久伊人| 欧美日韩另类国产亚洲欧美一级| 国产精品久久久久aaaa| 国产一区二区三区精品视频 | caoporen国产精品视频| 亚洲精品乱码久久久久久黑人| 久久无码av三级| 五月天激情综合| 欧美性受xxxx黑人xyx性爽| 国产精品人人做人人爽人人添| 久久99精品一区二区三区三区| 91精品国产91久久久久久最新毛片| 亚洲蜜臀av乱码久久精品| 一区二区三区欧美在线观看| 不卡在线观看av| 国产精品久久99| 99久久久国产精品免费蜜臀| 欧美激情在线观看视频免费| 国产盗摄精品一区二区三区在线|