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

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

?? avltree.c

?? http://gaul.sourceforge.net/ 這里大部分人討論的是在Matlab里實現GA的toolbox.以上為一個GA的C語言的軟件包.如果你想利用GA做優化算法,非常有用.而且有
?? C
?? 第 1 頁 / 共 2 頁
字號:
    if (node->right) return avltree_node_lookup(node->right, key);    }  else    {	/* key == node->key */    return node->data;    }  return NULL;  }#endif/* * Iterative version -- much more efficient than the recursive version. */static vpointer avltree_node_lookup(AVLNode *node, AVLKey key)  {  while (node!=NULL && key!=node->key)    {    if (key < node->key)      node = node->left;    else      node = node->right;    }/* if (node) printf("Found key %p >", node->data); else printf("Not found key >");*/  return node;  }/* * Recursive node counting routine. * Need an iterative version. */static int avltree_node_count(AVLNode *node)  {  int count=1;  if (node->left!=NULL) count += avltree_node_count(node->left);  if (node->right!=NULL) count += avltree_node_count(node->right);  return count;  }/* * Stops when an AVLTraverseFunc() callback returns TRUE. */static boolean avltree_node_traverse(AVLNode *node,                     AVLTraverseFunc traverse_func, vpointer userdata)  {  if (node->left!=NULL)    {    if (avltree_node_traverse(node->left, traverse_func, userdata)) return TRUE;    }  if ((*traverse_func)(node->key, node->data, userdata)) return TRUE;  if (node->right!=NULL)    {    if (avltree_node_traverse(node->right, traverse_func, userdata)) return TRUE;    }  return FALSE;  }static int avltree_node_height(AVLNode *node)  {  int left_height;  int right_height;  if (!node) return 0;  if (node->left!=NULL)    left_height = avltree_node_height(node->left);  else    left_height = 0;  if (node->right!=NULL)    right_height = avltree_node_height(node->right);  else    right_height = 0;  return MAX(left_height, right_height) + 1;  }static AVLNode *avltree_node_rotate_left(AVLNode *node)  {  AVLNode *right;  int a_bal;  int b_bal;  right = node->right;  node->right = right->left;  right->left = node;  a_bal = node->balance;  b_bal = right->balance;  if (b_bal <= 0)    {    if (a_bal >= 1) right->balance = b_bal - 1;    else right->balance = a_bal + b_bal - 2;    node->balance = a_bal - 1;    }  else    {    if (a_bal <= b_bal) right->balance = a_bal - 2;    else right->balance = b_bal - 1;    node->balance = a_bal - b_bal - 1;    }  return right;  }static AVLNode *avltree_node_rotate_right(AVLNode *node)  {  AVLNode *left;  int a_bal;  int b_bal;  left = node->left;  node->left = left->right;  left->right = node;  a_bal = node->balance;  b_bal = left->balance;  if (b_bal <= 0)    {    if (b_bal > a_bal) left->balance = b_bal + 1;    else left->balance = a_bal + 2;    node->balance = a_bal - b_bal + 1;    }  else    {    if (a_bal <= -1) left->balance = b_bal + 1;    else left->balance = a_bal + b_bal + 2;    node->balance = a_bal + 1;    }  return left;  }static void avltree_node_check(AVLNode *node)  {  int left_height;  int right_height;  int balance;    if (node!=NULL)    {    if (node->left!=NULL)      left_height = avltree_node_height(node->left);    else      left_height = 0;    if (node->right!=NULL)      right_height = avltree_node_height(node->right);    else      right_height = 0;          balance = right_height - left_height;    if (balance != node->balance)      dief("avltree_node_check: failed: %d ( %d )", balance, node->balance);          if (node->left!=NULL)      avltree_node_check(node->left);    if (node->right!=NULL)      avltree_node_check(node->right);    }  return;  }/* * Public Interface: *//* * This function must be called before any other functions is OpenMP * code is to be used.  Can be safely called when OpenMP code is not * being used, and can be safely called more than once. */void avltree_init_openmp(void)  {#if USE_OPENMP == 1  if (avltree_openmp_initialised == FALSE)    {    omp_init_lock(&avltree_node_buffer_lock);    avltree_openmp_initialised = TRUE;    }#endif  return;  }AVLTree *avltree_new(AVLKeyFunc key_generate_func)  {  AVLTree *tree;  if (!key_generate_func) return NULL;  AVLnum_trees++;  tree = s_malloc(sizeof(AVLTree));  if (!tree) die("Unable to allocate memory.");  tree->root = NULL;  tree->key_generate_func = key_generate_func;  return tree;  }void avltree_delete(AVLTree *tree)  {  if (!tree) return;  avltree_node_delete(tree->root);  s_free(tree);  AVLnum_trees--;  THREAD_LOCK(avltree_node_buffer_lock);  if (AVLnum_trees == 0)    _destroy_buffers();  THREAD_UNLOCK(avltree_node_buffer_lock);  return;  }void avltree_destroy(AVLTree *tree, AVLDestructorFunc free_func)  {  if (!tree) return;  if (free_func!=NULL)    avltree_node_destroy(tree->root, free_func);  else    avltree_node_delete(tree->root);  s_free(tree);  AVLnum_trees--;  THREAD_LOCK(avltree_node_buffer_lock);  if (AVLnum_trees == 0)    _destroy_buffers();  THREAD_UNLOCK(avltree_node_buffer_lock);  return;  }boolean avltree_insert(AVLTree *tree, vpointer data)  {  boolean	inserted=FALSE;  if (!tree) return FALSE;  if (!data) return FALSE;	/* ordered search would barf at this! */  tree->root = avltree_node_insert(tree->root,                    tree->key_generate_func(data), data, &inserted);  return inserted;  }vpointer avltree_remove(AVLTree *tree, vpointer data)  {  vpointer removed=NULL;  if (!tree || !tree->root) return NULL;  tree->root = avltree_node_remove(tree->root, tree->key_generate_func(data), &removed);  return removed;  }vpointer avltree_remove_key(AVLTree *tree, AVLKey key)  {  vpointer removed=NULL;  if (!tree || !tree->root) return NULL;  tree->root = avltree_node_remove(tree->root, key, &removed);  return removed;  }vpointer avltree_lookup(AVLTree *tree, vpointer data)  {  AVLNode	*node;  if (!tree || !tree->root) return NULL;  node = avltree_node_lookup(tree->root, tree->key_generate_func(data));  return node?node->data:NULL;  }vpointer avltree_lookup_key(AVLTree *tree, AVLKey key)  {  AVLNode	*node;  if (!tree || !tree->root) return NULL;  node = avltree_node_lookup(tree->root, key);  return node?node->data:NULL;  }vpointer avltree_lookup_lowest(AVLTree *tree)  {  AVLNode	*node;  if (!tree || !tree->root) return NULL;  node = avltree_node_lookup_leftmost(tree->root);  return node?node->data:NULL;  }vpointer avltree_lookup_highest(AVLTree *tree)  {  AVLNode	*node;  if (!tree || !tree->root) return NULL;  node = avltree_node_lookup_rightmost(tree->root);  return node?node->data:NULL;  }vpointer avltree_ordered_search(AVLTree *tree,                    AVLSearchFunc search_func, vpointer userdata)  {  if (!tree || !tree->root) return NULL;  return avltree_node_ordered_search(tree->root, search_func, userdata);  }vpointer avltree_search(AVLTree *tree, AVLMatchFunc search_func, vpointer userdata)  {  vpointer	nodedata=NULL;  if (!tree || !tree->root) return NULL;  return avltree_node_search(tree->root, search_func, userdata, &nodedata)?nodedata:NULL;  }void avltree_traverse(AVLTree *tree, AVLTraverseFunc traverse_func, vpointer userdata)  {  if (!tree || !tree->root) return;  avltree_node_traverse(tree->root, traverse_func, userdata);  return;  }int avltree_height(AVLTree *tree)  {  return (tree!=NULL && tree->root!=NULL)?avltree_node_height(tree->root):0;  }int avltree_num_nodes(AVLTree *tree)  {  return (tree!=NULL && tree->root!=NULL)?avltree_node_count(tree->root):0;  }/* * Testing: */void avltree_diagnostics(void)  {  printf("=== AVLTree diagnostics ======================================\n");  printf("Version:                   %s\n", GA_VERSION_STRING);  printf("Build date:                %s\n", GA_BUILD_DATE_STRING);  printf("Compilation machine characteristics:\n%s\n", GA_UNAME_STRING);  printf("--------------------------------------------------------------\n");  printf("structure                  sizeof\n");  printf("AVLTree                    %lu\n", (unsigned long) sizeof(AVLTree));  printf("AVLNode                    %lu\n", (unsigned long) sizeof(AVLNode));  printf("--------------------------------------------------------------\n");  printf("Trees in use:              %d\n", AVLnum_trees);  printf("==============================================================\n");  return;  }static boolean failed = FALSE;static AVLKey test_avltree_generate(constvpointer data)  {/* * Simple casting from char to AVLKey... should work ;) * (It works when AVLKey is the default unsigned long...) */  return (AVLKey) *((char *)data);/*  return (AVLKey) (data);*/  }static boolean test_avltree_traverse(AVLKey key, vpointer data, vpointer userdata)  {/* check. */  if (key != test_avltree_generate(data))    {    printf("failure (%ld %ld) ", key, test_avltree_generate(data));    failed=TRUE;    }/* output character. */  printf("%c ", *((char *)data));/*  printf("%c=%ld ", *((char *)data), (long) test_avltree_generate(data));*//* terminate traversal if userdata is non-NULL and character is 'S'. */  if ((boolean *)userdata!=NULL && *((char *)data)=='S')    {    printf("%s ", (char *)userdata);    return TRUE;    }  return FALSE;  }#ifdef AVLTREE_COMPILE_MAINint main(int argc, char **argv)#elseboolean avltree_test(void)#endif  {  int		i, j;  AVLTree	*tree;  char		chars[62];  char		chx='x', chX='X', *ch;  printf("Testing my dodgy AVL tree routines.\n");  tree = avltree_new(test_avltree_generate);  i = 0;  for (j = 0; j < 26; j++, i++)    {    chars[i] = 'A' + (char) j;    avltree_insert(tree, &chars[i]);    }  for (j = 0; j < 26; j++, i++)    {    chars[i] = 'a' + (char) j;    avltree_insert(tree, &chars[i]);    }  for (j = 0; j < 10; j++, i++)    {    chars[i] = '0' + (char) j;    avltree_insert(tree, &chars[i]);    }  printf("height: %d\n", avltree_height(tree));  printf("num nodes: %d\n", avltree_num_nodes(tree));  printf("tree: ");  avltree_traverse(tree, test_avltree_traverse, NULL);  printf("\n");  printf("tree to 'S' then foo: ");  avltree_traverse(tree, test_avltree_traverse, "foo");  printf("\n");  for (i = 0; i < 26; i++)    if ( !avltree_remove(tree, &chars[i]) ) printf("%c not found.\n", chars[i]);  printf("height: %d\n", avltree_height(tree));  printf("num nodes: %d\n", avltree_num_nodes(tree));  printf("tree: ");  avltree_traverse(tree, test_avltree_traverse, NULL);  printf("\n");  printf("Lookup for 'x': ");  ch = (char *) avltree_lookup(tree, (vpointer) &chx);  if (ch) printf("Found '%c'\n", *ch); else printf("Not found.\n");  printf("Lookup for 'X': ");  ch = (char *) avltree_lookup(tree, (vpointer) &chX);  if (ch) printf("Found '%c'\n", *ch); else printf("Not found.\n");  printf("Tests:         %s\n", failed?"FAILED":"PASSED");  avltree_delete(tree);  return failed;  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频播放| av亚洲精华国产精华精华| 国产婷婷一区二区| 欧美无砖砖区免费| av激情综合网| 激情文学综合插| 日日欢夜夜爽一区| 中文字幕一区二区三区在线播放| 91精品国产麻豆国产自产在线 | 日韩制服丝袜av| 国产精品理论在线观看| 日韩欧美在线不卡| 欧美三级视频在线| 色综合天天综合网天天看片| 国内精品伊人久久久久av影院| 亚洲成av人在线观看| 国产精品久99| 欧美国产成人精品| 精品国产凹凸成av人网站| 欧美日韩在线三区| 色一情一乱一乱一91av| 国产激情一区二区三区| 激情综合亚洲精品| 免费成人在线网站| 天天综合色天天| 亚洲一区二区三区四区五区黄| 中文字幕成人网| 国产性做久久久久久| 欧美成人a视频| 日韩一区二区高清| 9191久久久久久久久久久| 欧美日韩一区二区三区四区五区| 91视频在线观看免费| 99久久精品免费看国产| 成人av在线观| www.66久久| 99国内精品久久| 91在线视频在线| 色综合激情久久| 欧美性做爰猛烈叫床潮| 欧美午夜精品免费| 欧美精品123区| 制服丝袜激情欧洲亚洲| 91精品国产黑色紧身裤美女| 欧美人与禽zozo性伦| 欧美三级资源在线| 91麻豆精品国产91久久久久久| 欧美精品在线一区二区三区| 欧美另类高清zo欧美| 91麻豆精品国产自产在线观看一区| 欧美二区三区的天堂| 欧美电影免费提供在线观看| 日韩一区二区麻豆国产| 久久九九久久九九| 国产精品久久久久三级| 亚洲男人的天堂av| 亚欧色一区w666天堂| 麻豆成人久久精品二区三区红 | 99国产精品久| 色综合久久综合| 3751色影院一区二区三区| 日韩三级免费观看| 国产日本亚洲高清| 亚洲男人的天堂在线观看| 亚洲h动漫在线| 韩国理伦片一区二区三区在线播放| 丁香婷婷深情五月亚洲| 色综合天天综合网国产成人综合天 | 成人动漫一区二区| 91蝌蚪porny九色| 在线成人av影院| 久久久精品黄色| 亚洲自拍偷拍av| 另类人妖一区二区av| 成人性生交大片免费看在线播放 | 在线播放国产精品二区一二区四区 | bt欧美亚洲午夜电影天堂| 91久久精品一区二区| 日韩一区二区三区电影在线观看 | 欧美视频在线一区二区三区| 日韩美女视频一区二区在线观看| 中文字幕第一区综合| 五月天国产精品| 国产成人免费在线观看| 欧美日韩aaa| 中文子幕无线码一区tr| 日韩精品乱码av一区二区| 成人av电影在线| 日韩片之四级片| 亚洲精品国久久99热| 九九视频精品免费| 91久久人澡人人添人人爽欧美| 91 com成人网| 亚洲免费电影在线| 国产精品一区二区三区四区| 欧美性生活久久| 国产精品久久久久久福利一牛影视 | 欧美一级视频精品观看| 亚洲欧美一区二区在线观看| 久久精品99国产国产精| 在线看日本不卡| 亚洲国产精品传媒在线观看| 天天综合色天天综合| 91老师国产黑色丝袜在线| 精品sm捆绑视频| 日韩av一级片| 欧美日韩情趣电影| 日韩一区在线看| 成人高清免费观看| 国产午夜精品一区二区 | 精品综合久久久久久8888| 色综合激情五月| 国产精品久久99| 成人影视亚洲图片在线| 精品国产伦理网| 麻豆国产精品一区二区三区| 欧美人与z0zoxxxx视频| 亚洲一区二区三区视频在线 | 日韩一本二本av| 亚洲国产精品一区二区久久 | 偷拍日韩校园综合在线| 色成年激情久久综合| 国产精品护士白丝一区av| 国产二区国产一区在线观看| 亚洲精品一区二区三区精华液| 偷拍自拍另类欧美| 欧美电影影音先锋| 天堂成人免费av电影一区| 色视频成人在线观看免| 亚洲精品综合在线| 色老头久久综合| 亚洲黄色小说网站| 在线欧美日韩精品| 亚洲综合一区在线| 欧美色精品在线视频| 亚洲资源在线观看| 在线免费观看视频一区| 亚洲成人精品影院| 欧美女孩性生活视频| 亚洲不卡在线观看| 7777精品伊人久久久大香线蕉| 天堂午夜影视日韩欧美一区二区| 欧美日韩一二区| 日本中文字幕一区二区视频| 日韩欧美国产麻豆| 国内外精品视频| 国产精品三级视频| 色婷婷av一区二区三区软件| 一区二区三区91| 欧美男女性生活在线直播观看| 午夜精品一区二区三区电影天堂| 欧美日韩高清一区二区不卡| 美女精品自拍一二三四| 国产午夜亚洲精品羞羞网站| 盗摄精品av一区二区三区| 亚洲天堂精品视频| 欧美日韩视频在线观看一区二区三区| 午夜精品久久一牛影视| 日韩精品一区在线观看| 国产精品456露脸| 亚洲三级小视频| 91精品国产综合久久国产大片| 久久国产福利国产秒拍| 中文乱码免费一区二区| 日本韩国一区二区三区视频| 丝袜诱惑制服诱惑色一区在线观看| 日韩欧美不卡在线观看视频| 国产不卡在线一区| 亚洲国产成人av| 久久久久一区二区三区四区| 一本到三区不卡视频| 麻豆freexxxx性91精品| 亚洲欧美影音先锋| 日韩一区二区电影网| 99久精品国产| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美韩日一区二区三区四区| 色综合一区二区| 久久91精品国产91久久小草| 亚洲欧美一区二区三区久本道91 | 91精品国产一区二区三区蜜臀| 国产精品一区2区| 亚洲一区二区视频在线观看| 欧美精品一区二区三区视频| 91污在线观看| 狠狠色综合日日| 亚洲在线免费播放| 国产欧美精品在线观看| 欧美日韩精品二区第二页| 国产高清在线观看免费不卡| 天堂久久一区二区三区| 日韩一区日韩二区| 337p日本欧洲亚洲大胆色噜噜| 欧美综合亚洲图片综合区| 国产一区二区三区四区五区入口| 亚洲一区二区三区在线| 国产精品久久久久久久岛一牛影视 | 久久99国内精品| 亚洲国产精品久久艾草纯爱| 国产精品女人毛片|