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

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

?? treeops.c

?? 遺傳算法工具
?? C
字號:
/*
SGPC: Simple Genetic Programming in C
(c) 1993 by Walter Alden Tackett and Aviram Carmi
 
 This code and documentation is copyrighted and is not in the public domain.
 All rights reserved. 
 
 - This notice may not be removed or altered.
 
 - You may not try to make money by distributing the package or by using the
   process that the code creates.
 
 - You may not distribute modified versions without clearly documenting your
   changes and notifying the principal author.
 
 - The origin of this software must not be misrepresented, either by
   explicit claim or by omission.  Since few users ever read sources,
   credits must appear in the documentation.
 
 - Altered versions must be plainly marked as such, and must not be
   misrepresented as being the original software.  Since few users ever read
   sources, credits must appear in the documentation.
 
 - The authors are not responsible for the consequences of use of this 
   software, no matter how awful, even if they arise from flaws in it.
 
If you make changes to the code, or have suggestions for changes,
let us know!  (gpc@ipld01.hac.com)
*/

#ifndef lint
static char treeops_c_rcsid[]="$Id: treeops.c,v 2.7 1993/04/22 07:39:12 gpc-avc Exp gpc-avc $";
#endif

/*
 *
 * $Log: treeops.c,v $
 * Revision 2.7  1993/04/22  07:39:12  gpc-avc
 * Removed old log messages
 *
 * Revision 2.6  1993/04/14  04:42:52  gpc-avc
 * Fixed side effect of read_tree() modifying the random seed.
 * replaced global references to POP by the arg pop
 *
 *
 */

#include <stdio.h>
#include <malloc.h>
#include <errno.h>
#include "gpc.h"



#ifdef ANSI_FUNC

tree *create_tree_node(
  int pop,
  int nodetype,
  int id
  )
#else

tree *create_tree_node(pop, nodetype, id)
  int	pop;
  int	nodetype;
  int	id;
#endif
{
  tree	*t;
  
  if ((t = (tree *) malloc(sizeof(tree))) == NULL) {
    perror(" at point 1 in create_tree_node() <treeops.c>");
    exit(errno);
  }
  
  t->nodetype = nodetype;
  t->id = id;
  t->pop = pop;

  switch (nodetype) {
  case FUNCTION:
    init_function(t);
    break;
  case TERMINAL:
    init_terminal(t);
    break;
  default:
    fprintf(stderr,
	    "nodetype %d must be %d or %d in create_tree_node() <treeops.c>\n",
	    nodetype, FUNCTION, TERMINAL);
  }
  
  return t;
}

#ifdef ANSI_FUNC

VOID init_function(
  tree *t
  )
#else

VOID init_function(t)
  tree	*t;
#endif
{
  pop_struct *pop = POP;
 
  if ((t->id < 0) || (t->id >= pop[t->pop].function_table_size)) {
    fprintf(stderr,
	    "id %d must be >= 0 and < %d in init_function() <treeops.c>\n",
	    t->id, pop[t->pop].function_table_size);
  }

  
  if ((t->type.func = (function *) malloc(sizeof(function))) == NULL) {
    perror(" at point 1 in init_function() <treeops.c>");
    exit(errno);
  }
  
  if ((t->type.func->arg =
       (tree **) malloc(function_arity(t) * sizeof(tree *))) == NULL) {
    perror(" at point 2 in init_function() <treeops.c>");
    exit(errno);
  }
  
  if ((t->type.func->argvals =
       (GENERIC *) malloc(function_arity(t) * sizeof(GENERIC))) == NULL) {
    perror(" at point 3 in init_function() <treeops.c>");
    exit(errno);
  }
}

#ifdef ANSI_FUNC

VOID init_terminal(
  tree 	*t
)
#else

VOID init_terminal(t)
  tree	*t;
#endif
{
  pop_struct *pop = POP;
  GENERIC junk = -999999;

  /* t->id == terminal_table_size indicates that this terminal is a constant
     rather than a variable */

  if ((t->id < 0) || (t->id > pop[t->pop].terminal_table_size)) {
    fprintf(stderr,
	    "id %d must be >= 0 and <= %d in init_terminal() <treeops.c>\n",
	    t->id, pop[t->pop].terminal_table_size);
  }
  
  if ((t->type.term = (terminal *) malloc(sizeof(terminal))) == NULL) {
    perror(" at point 1 in init_terminal() <treeops.c>");
    exit(errno);
  }
  
  if (terminal_is_constant(t)) {
    if ((t->type.term->valptr = (GENERIC *) malloc(sizeof(GENERIC))) == NULL) {
      perror(" at point 2 in init_terminal() <treeops.c>");
      exit(errno);
    }
    /* stick a junk value into value pointer.  this may be replaced by the
       constant read from a file (if called by read_tree()) or the constant
       value of the leaf being copied (if called by copy_tree()) or
       by a random value if called form create_random_tree */
      *(t->type.term->valptr) = junk;
  } else {
    t->type.term->valptr = &(terminal_val(t));
  }
}

#ifdef ANSI_FUNC

tree *copy_tree(
	tree *t
	)
#else

tree *copy_tree(t)
tree   *t;
#endif
{
  switch (t->nodetype) {
  case FUNCTION:
    return copy_function(t);
  case TERMINAL:
    return copy_terminal(t);
  default:
    fprintf(stderr,
	    "nodetype %d must be %d or %d in copy_tree() <treeops.c>\n",
	    t->nodetype, FUNCTION, TERMINAL);
    return (tree *) NULL;
  }
}

#ifdef ANSI_FUNC

tree *copy_function(
  tree *t
  )
#else

tree *copy_function(t)
  tree *t;
#endif
{
  tree *nt;
  int  i;
  pop_struct *pop = POP;
  
  nt = create_tree_node(t->pop,t->nodetype, t->id);
  for (i=0; i < function_arity(t); i++ ) {
    nt->type.func->arg[i] = copy_tree(t->type.func->arg[i]);
  }
  return nt;
}


#ifdef ANSI_FUNC

tree *copy_terminal(
  tree *t
  )
#else

tree *copy_terminal(t)
  tree *t;
#endif
{
  tree *nt;
  pop_struct *pop = POP;
  
  nt = create_tree_node(t->pop,t->nodetype, t->id);
  if (terminal_is_constant(t)) {
    *(nt->type.term->valptr) = (*(t->type.term->valptr));
  }
  return nt;
}


#ifdef ANSI_FUNC

VOID free_tree(
  tree *t
  )
#else

VOID free_tree(t)
  tree   *t;
#endif
{
  switch (t->nodetype) {
  case FUNCTION:
    free_function(t);
    break;
  case TERMINAL:
    free_terminal(t);
    break;
  default:
    fprintf(stderr,
	    "nodetype %d must be %d or %d in free_tree() <treeops.c>\n",
	    t->nodetype, FUNCTION, TERMINAL);
  }
}

#ifdef ANSI_FUNC

VOID free_function(
  tree *t
  )
#else

VOID free_function(t)
  tree *t;
#endif
{
  int  i;
  pop_struct *pop = POP;
  
  for (i=0; i < function_arity(t); i++ ) {
    free_tree(t->type.func->arg[i]);
  }
  free(t->type.func->arg);
  free(t->type.func->argvals);
  free(t->type.func);
  free(t);
}

#ifdef ANSI_FUNC

VOID free_terminal(
  tree *t
  )
#else

VOID free_terminal(t)
  tree *t;
#endif
{
  pop_struct *pop = POP;

  if (terminal_is_constant(t)) {
    free(t->type.term->valptr);
  }
  free(t->type.term);
  free(t);
}
>type.func->argvals);
  free(t->type.func);
  free(t);
}

#ifdef ANSI_FUNC

VOID free_terminal(
  tree *t
  )
#else

VOID free_terminal(t)
  tree *t;
#endif
{
  pop_struct *pop = POP;

  if (terminal_is_constant(t)) {
    free(t->type.term->valptr);
  }
  free(t->type.term);
  free(t);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠狠色丁香婷婷综合激情 | 精品国产在天天线2019| 日韩一级高清毛片| 亚洲视频在线观看一区| 日韩精品免费专区| voyeur盗摄精品| 精品成人私密视频| 亚洲国产成人高清精品| 成人国产免费视频| 日韩欧美国产午夜精品| 亚洲午夜在线电影| av在线播放一区二区三区| 精品卡一卡二卡三卡四在线| 亚洲一区二区影院| 99国产欧美另类久久久精品| 日本一区二区三区在线观看| 国产一区二三区| 欧美成人福利视频| 热久久久久久久| 欧美伦理影视网| 久久99久久99小草精品免视看| 亚洲地区一二三色| 精品一区二区三区在线观看| 欧美手机在线视频| 亚洲色图色小说| 成av人片一区二区| 国产精品欧美一区二区三区| 国产精品88888| 国产蜜臀av在线一区二区三区| 久久国产精品99精品国产| 欧美一区二区三区四区五区 | 亚洲欧洲精品天堂一级| 国产精品亚洲一区二区三区在线| 欧美精品一区二区三区在线播放| 美女网站视频久久| 精品国产百合女同互慰| 精品一区二区三区不卡| 精品国产电影一区二区| 国模冰冰炮一区二区| 国产亚洲一二三区| 粉嫩嫩av羞羞动漫久久久| 国产精品人成在线观看免费 | 日韩电影在线看| 666欧美在线视频| 精品在线观看免费| 久久综合久色欧美综合狠狠| 国产高清精品在线| 中文字幕一区二区视频| 色婷婷激情综合| 日韩激情av在线| 精品盗摄一区二区三区| 东方aⅴ免费观看久久av| 亚洲欧洲性图库| 欧美精品久久天天躁| 欧美aaaaaa午夜精品| 久久精品夜夜夜夜久久| 99久久99久久精品免费观看| 亚洲国产精品麻豆| 欧美精品一区二区三区一线天视频 | 激情综合网激情| 国产精品麻豆99久久久久久| 日本韩国欧美在线| 蜜桃久久久久久| 亚洲视频资源在线| 欧美一区二区三区视频在线| 成人免费三级在线| 午夜视频在线观看一区二区| 国产亚洲欧美一区在线观看| 色婷婷av一区二区三区大白胸| 麻豆成人av在线| 伊人开心综合网| 久久久久久久久久美女| 欧美日韩午夜精品| 国产福利电影一区二区三区| 性做久久久久久久久| 国产精品欧美一区二区三区| 欧美一区二区国产| 99re热视频这里只精品| 美女视频一区在线观看| 综合久久久久综合| 欧美成人精品3d动漫h| 欧洲精品一区二区| 国产很黄免费观看久久| 秋霞影院一区二区| 亚洲精品伦理在线| 国产三级一区二区三区| 欧美一级二级三级乱码| 色一情一乱一乱一91av| 国产91高潮流白浆在线麻豆 | 成人av网站免费观看| 免费成人在线视频观看| 亚洲精品免费在线观看| 久久久久久影视| 日韩欧美亚洲国产另类| 欧美日韩一区二区三区免费看| 成人激情视频网站| 国产美女主播视频一区| 毛片不卡一区二区| 日日骚欧美日韩| 亚洲成人动漫在线观看| 一区二区三区欧美日| 国产精品五月天| 欧美—级在线免费片| 精品国产91亚洲一区二区三区婷婷| 欧美日韩免费一区二区三区视频| 色香色香欲天天天影视综合网| aaa亚洲精品一二三区| 国产激情精品久久久第一区二区 | 亚洲精品老司机| 中文字幕亚洲精品在线观看| 中文字幕av不卡| 国产精品丝袜91| 国产精品色哟哟| 国产精品色哟哟| 亚洲欧洲日韩av| 一区二区视频在线| 亚洲综合区在线| 亚洲高清免费在线| 日产国产欧美视频一区精品| 麻豆精品视频在线观看视频| 九九热在线视频观看这里只有精品| 极品瑜伽女神91| 国产乱码精品一品二品| 成人综合在线网站| 成人免费毛片高清视频| 一本一道久久a久久精品| 日本道色综合久久| 欧美曰成人黄网| 5月丁香婷婷综合| 精品av久久707| 国产女同性恋一区二区| 亚洲欧美日韩在线播放| 亚洲国产精品久久不卡毛片| 麻豆国产精品777777在线| 激情偷乱视频一区二区三区| 高清免费成人av| 一本一道综合狠狠老| 欧美另类高清zo欧美| 精品日产卡一卡二卡麻豆| 久久精品视频一区二区三区| 国产精品乱人伦一区二区| 一区二区三区丝袜| 奇米色一区二区三区四区| 国产精品资源在线| 在线中文字幕一区二区| 欧美不卡一区二区三区四区| 国产精品久久综合| 午夜精品免费在线观看| 精品一区二区三区影院在线午夜| 成人av手机在线观看| 3atv一区二区三区| 欧美国产一区二区在线观看| 午夜视频一区二区| 国产精品一区二区三区网站| 欧美三级在线播放| 国产亚洲污的网站| 午夜在线成人av| www.久久久久久久久| 欧美一区二区三区四区五区| 亚洲视频你懂的| 狠狠色丁香婷婷综合| 色吧成人激情小说| 欧美mv日韩mv| 亚洲一区在线视频| 国产成人av自拍| 日韩欧美一级二级三级久久久| 亚洲视频在线一区观看| 国产专区欧美精品| 欧美日韩国产一级片| 国产精品三级av| 精品影视av免费| 3atv在线一区二区三区| 亚洲欧美激情一区二区| 国产一区二区三区四区五区美女| 欧美高清激情brazzers| 中文字幕亚洲综合久久菠萝蜜| 韩国精品在线观看| 日韩手机在线导航| 亚洲高清视频的网址| 色一情一伦一子一伦一区| 中文字幕精品综合| 国产一区二区剧情av在线| 3atv一区二区三区| 午夜精品免费在线观看| 色狠狠综合天天综合综合| √…a在线天堂一区| 懂色中文一区二区在线播放| 久久综合99re88久久爱| 久久se这里有精品| 欧美一区二区私人影院日本| 亚洲午夜三级在线| 欧美系列日韩一区| 一区二区三区在线观看网站| 99精品视频在线观看| 国产精品电影院| 91网上在线视频| 亚洲激情图片qvod| 91浏览器入口在线观看| 亚洲精品一二三区| 色视频欧美一区二区三区|