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

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

?? classify.c

?? 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一区二区三区免费野_久草精品视频
欧美一区二区三区在线看| 91论坛在线播放| 日韩精品中文字幕一区二区三区 | 亚洲一区二区三区影院| 成人av在线影院| 综合久久久久久久| 91美女蜜桃在线| 一区二区三区四区精品在线视频| www.久久精品| 一区二区三区 在线观看视频| 欧美性色综合网| 天堂一区二区在线免费观看| 日韩久久精品一区| 丁香激情综合国产| 亚洲精品国产无天堂网2021| 欧美性感一区二区三区| 午夜激情一区二区三区| 日韩亚洲欧美一区二区三区| 国产精品99久久久| 尤物av一区二区| 日韩欧美一二三区| 成人涩涩免费视频| 亚洲妇熟xx妇色黄| 26uuuu精品一区二区| 成人黄色软件下载| 日日摸夜夜添夜夜添精品视频| 精品久久久久一区二区国产| 国产白丝精品91爽爽久久| 一区二区三区中文字幕| 日韩欧美一卡二卡| av在线一区二区| 免费成人av在线| 国产精品电影院| 欧美一区二区三区日韩视频| 国产不卡高清在线观看视频| 亚洲一区二区三区四区不卡| 久久久精品一品道一区| 色av成人天堂桃色av| 精品亚洲aⅴ乱码一区二区三区| 亚洲同性gay激情无套| 欧美一二区视频| 色综合久久综合中文综合网| 国产一区二三区| 亚洲综合在线观看视频| 久久影院午夜片一区| 欧美日韩在线一区二区| 国产成人在线看| 视频一区国产视频| 专区另类欧美日韩| 久久精品亚洲麻豆av一区二区 | 色乱码一区二区三区88| 狠狠色狠狠色合久久伊人| 亚洲成人免费在线观看| 国产精品传媒在线| 久久精品网站免费观看| 555www色欧美视频| 91免费观看视频在线| 国产成人高清视频| 麻豆国产91在线播放| 亚洲第一狼人社区| 亚洲人成人一区二区在线观看| 欧美精品一区二区三区视频 | 国产91精品露脸国语对白| 日韩av二区在线播放| 亚洲午夜在线观看视频在线| 中文字幕在线观看不卡视频| 国产亚洲视频系列| 欧美一区二区福利在线| 欧美日韩高清影院| 色8久久精品久久久久久蜜| av电影在线观看一区| 成人av在线一区二区三区| 高清beeg欧美| 国产激情偷乱视频一区二区三区| 久久国产精品露脸对白| 日本一道高清亚洲日美韩| 首页国产欧美日韩丝袜| 午夜精品免费在线| 日韩电影免费一区| 日韩成人免费看| 久久成人18免费观看| 黑人精品欧美一区二区蜜桃| 另类调教123区| 精品一区二区三区免费| 久久99久久久欧美国产| 国产一区二区伦理片| 国产一区二区在线电影| 国产老肥熟一区二区三区| 国产精品香蕉一区二区三区| 国产剧情在线观看一区二区| 国产成人精品亚洲日本在线桃色 | 亚洲国产精品尤物yw在线观看| 一区二区三区在线免费视频| 亚洲综合免费观看高清完整版在线| 亚洲一区二区三区小说| 亚洲不卡av一区二区三区| 婷婷一区二区三区| 蜜桃久久精品一区二区| 国产精品自拍av| 成人免费看视频| 欧美优质美女网站| 7777女厕盗摄久久久| 日韩精品中文字幕一区二区三区| 精品国产a毛片| 国产精品丝袜在线| 亚洲黄色片在线观看| 亚洲成人精品在线观看| 精品中文字幕一区二区| 粉嫩欧美一区二区三区高清影视| 99re成人精品视频| 91精品国产乱码| 精品国产成人在线影院 | 欧美高清激情brazzers| 精品精品国产高清a毛片牛牛| 久久久久国色av免费看影院| 亚洲欧洲日韩女同| 日本强好片久久久久久aaa| 国产综合久久久久影院| 97国产精品videossex| 欧美精品九九99久久| 久久久久久久久久电影| 亚洲亚洲精品在线观看| 精品一区二区三区免费| 色悠悠久久综合| 日韩情涩欧美日韩视频| 亚洲视频图片小说| 热久久国产精品| av在线播放一区二区三区| 欧美一级日韩免费不卡| 国产精品久久福利| 麻豆精品视频在线观看视频| av午夜精品一区二区三区| 欧美一区二区三区啪啪| 毛片av中文字幕一区二区| 波多野洁衣一区| 欧美一区二区在线不卡| 最新国产成人在线观看| 美女精品自拍一二三四| 色噜噜久久综合| 国产日韩欧美高清在线| 午夜日韩在线观看| 一本到高清视频免费精品| 久久香蕉国产线看观看99| 天堂va蜜桃一区二区三区 | jvid福利写真一区二区三区| 欧美成人在线直播| 亚洲成人资源在线| 91网页版在线| 国产女主播在线一区二区| 免费av成人在线| 欧美午夜宅男影院| 亚洲同性gay激情无套| 国产成人免费9x9x人网站视频| 日韩亚洲欧美中文三级| 亚洲一二三四在线| 色猫猫国产区一区二在线视频| 日本一区二区三区在线不卡| 久久66热偷产精品| 欧美一级高清大全免费观看| 午夜伊人狠狠久久| 一本久久a久久精品亚洲| 国产精品久久精品日日| 成人激情午夜影院| 日本一区二区高清| 国产99精品国产| 国产日产欧美一区二区三区| 国产精品综合在线视频| 久久久综合九色合综国产精品| 精品一区免费av| 亚州成人在线电影| 欧美日韩一区二区三区免费看| 亚洲美女精品一区| 一本久道中文字幕精品亚洲嫩| 亚洲图片激情小说| 在线观看区一区二| 亚洲成人免费观看| 欧美久久久久久久久中文字幕| 亚洲午夜精品17c| 欧美日韩国产欧美日美国产精品| 香蕉成人伊视频在线观看| 在线观看www91| 天堂va蜜桃一区二区三区| 91精品国产综合久久蜜臀| 日韩福利视频导航| 日韩欧美第一区| 国产乱妇无码大片在线观看| 国产欧美日韩激情| 99热这里都是精品| 亚洲在线视频免费观看| 91.麻豆视频| 激情综合网最新| 国产日韩精品视频一区| 不卡高清视频专区| 一区二区三区在线观看网站| 欧美狂野另类xxxxoooo| 人人爽香蕉精品| 中文在线资源观看网站视频免费不卡| 99综合影院在线| 亚洲午夜在线观看视频在线| 欧美大片一区二区三区|