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

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

?? tree.c

?? 壓縮包里面的都是精致的基本C語言小程序
?? C
字號:
#include <stdio.h>#include "mystdlib.h"#include "nat.h"#include "commonInter.h"#include "plist.h"#include "property.h"#include "linkedList.h"#include "error.h"#include "counter.h"#include "dot.h"#include "tree.h"struct tree{  linkedList vs;  str treeName;};struct vertex{  tyVft vft;  poly info;  linkedList edges;  plist plist;};struct edge{  tyVft vft;  struct vertex *from;  struct vertex *to;  plist plist;};typedef struct vertex *vertex;typedef struct edge *edge;static struct tyVft vertexVft;static struct tyVft edgeVft;static int vertexFlag = 1;static int edgeFlag = 1;static int vertexEquals (poly v1, poly v2);static plist vertexGetPlist (poly data);static int vertexHashCode (poly data);static str vertexToString (poly data);static int edgeEquals (poly v1, poly v2);static plist edgeGetPlist (poly data);static int edgeHashCode (poly data);static str edgeToString (poly data);static vertex searchVertex (tree t, poly data);tree newTree (str treeName){  tree t = checkedMalloc (sizeof (*t));  t->vs = newLinkedList ();  t->treeName = treeName;    return t;}str treeName (tree t){  return t->treeName;}static vertex newVertex (poly data){  vertex v = checkedMalloc (sizeof (*v));  if (vertexFlag)  {    vertexFlag--;    vertexVft.equals = vertexEquals;    vertexVft.getPlist = vertexGetPlist;    vertexVft.hashCode = vertexHashCode;    vertexVft.toString = vertexToString;  }  v->vft = &vertexVft;  v->info = data;  v->edges = newLinkedList ();  v->plist = newPlist ();    return v;}static vertex searchVertex (tree t, poly data){  linkedList p = linkedListGetFirst (t->vs);    tyEquals eq = getVft (data)->equals;  while (p)  {    if (eq (data, (((vertex)(p->data))->info)))    {      return p->data;    }    else    {      p = p->next;    }  }  error ("no this data: tree.c\n");  return NULL;}static int vertexEquals (poly v1, poly v2){  return plistEquals (((vertex)v1)->plist, ((vertex)v2)->plist);}static plist vertexGetPlist (poly data){  return ((vertex)(data))->plist;}static int vertexHashCode (poly data){  // a trivial but correct one  return 0;}static str vertexToString (poly data){  exception ("not implemented yet\n");  return NULL;}/*static edge newEdge (tree t, poly from, poly to){  edge e = checkedMalloc (sizeof (*e));  if (edgeFlag)  {    edgeFlag--;    edgeVft.equals = edgeEquals;    edgeVft.getPlist = edgeGetPlist;    edgeVft.hashCode = edgeHashCode;    edgeVft.toString = edgeToString;  }  e->vft = &edgeVft;  vertex fromVertex = searchVertex (t, from);  vertex toVertex = searchVertex (t, to);    e->from = fromVertex;  e->to = toVertex;  e->plist = newPlist ();    return e;}*/static edge newEdge2 (vertex fromVertex, vertex toVertex){  edge e = checkedMalloc (sizeof (*e));  if (edgeFlag)  {    edgeFlag--;    edgeVft.equals = edgeEquals;    edgeVft.getPlist = edgeGetPlist;    edgeVft.hashCode = edgeHashCode;    edgeVft.toString = edgeToString;  }  e->vft = &edgeVft;  e->from = fromVertex;  e->to = toVertex;  e->plist = newPlist ();    return e;}static int edgeEquals (poly v1, poly v2){  return plistEquals (((edge)v1)->plist, ((edge)v2)->plist);  }static plist edgeGetPlist (poly data){  return ((edge)data)->plist;}static int edgeHashCode (poly data){  // a trivial but correct one  return 0;}static str edgeToString (poly data){  exception ("not implemented yet: tree.c\n");  return NULL;}void treeInsertVertex (tree g, poly x){  vertex v = newVertex (x);  linkedListInsertHead (g->vs, v);  return;}void treeInsertEdge (tree t, poly from, poly to){    vertex fromVertex = searchVertex (t, from);  vertex toVertex = searchVertex (t, to);  edge e = newEdge2 (fromVertex, toVertex);  linkedListInsertHead (fromVertex->edges, e);    return;}void treeListAllVertex (tree t, tyVisit visit){  linkedList l = linkedListGetFirst (t->vs);    while (l)  {    visit (((vertex)(l->data))->info);    l = l->next;  }  return;}void treeToJpg (tree t, str fname){  dot d = newDot ();    str emptyStr = newStr ("");  str name = strConcat (t->treeName, fname);    linkedList l = linkedListGetFirst (t->vs);    while (l)  {    vertex v = (vertex)(l->data);    str sFrom = getVft (v->info)->toString (v->info);    linkedList es = linkedListGetFirst (v->edges);    while (es)    {      edge e = (edge)(es->data);      str sTo = getVft (e->to->info) ->toString (e->to->info);      dotInsert (sFrom, sTo, emptyStr, d);      es = es->next;    }    l = l->next;  }    dotToJpg (d, strToCharStar (name));}void treePreOrderDoit (vertex v, property visited, tyVisit visit){  if (visit)  {    printf ("\nnow visiting vertex: ");    visit (v->info);  }  propertyAdd (visited, v, newNat (1));  linkedList edges = linkedListGetFirst (v->edges);    while (edges)  {    edge e = edges->data;    vertex to = e->to;    poly value = propertyPeek (visited, to);    if (!value)      treePreOrderDoit (to, visited,visit);    edges = edges->next;  }  return;}void treePreOrder (tree t, poly start, tyVisit visit){  linkedList vs = linkedListGetFirst (t->vs);  vertex stv = searchVertex (t, start);  property visited = newProperty ();    if (!stv)    treePreOrderDoit (stv, visited, visit);      while (vs)  {    vertex current = vs->data;    poly value = propertyPeek (visited, current);    if (!value)      treePreOrderDoit (current, visited, visit);    vs = vs->next;  }    propertyDestroy (visited);  return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合亚洲网站| 亚洲人一二三区| 6080yy午夜一二三区久久| 色999日韩国产欧美一区二区| 国产福利电影一区二区三区| 亚洲国产精品成人综合| 中文字幕一区二区在线观看| 日av在线不卡| 欧美专区日韩专区| 国产精品久久久久久一区二区三区| 亚洲大片在线观看| 91视频xxxx| 国产精品网站在线播放| 美女视频网站久久| 欧美日韩国产123区| 国产精品久久99| 国产成人亚洲综合a∨猫咪| 91精品国产黑色紧身裤美女| 亚洲一区影音先锋| 91国模大尺度私拍在线视频| 国产精品免费观看视频| 粉嫩一区二区三区性色av| 精品人在线二区三区| 日韩电影免费一区| 精品精品欲导航| 日本不卡视频一二三区| 欧美日韩在线精品一区二区三区激情| 国产日产欧美一区二区三区| 蜜臀精品一区二区三区在线观看| 欧美猛男超大videosgay| 亚洲国产精品视频| 欧美丝袜丝nylons| 午夜一区二区三区视频| 欧美日韩二区三区| 日产国产欧美视频一区精品| 欧美精品久久久久久久多人混战| 亚洲www啪成人一区二区麻豆| 欧洲视频一区二区| 首页欧美精品中文字幕| 欧美丰满美乳xxx高潮www| 日韩av中文字幕一区二区| 日韩视频国产视频| 国产精品综合av一区二区国产馆| www国产精品av| av一区二区不卡| 亚洲精品成人在线| 91精品黄色片免费大全| 麻豆国产欧美一区二区三区| 一片黄亚洲嫩模| 久久国产精品色婷婷| 欧美日韩免费电影| 中文字幕一区二区三区四区| 国产一区二三区| 91精品国产麻豆国产自产在线 | 视频一区视频二区中文| 粉嫩嫩av羞羞动漫久久久 | 久久不见久久见中文字幕免费| 成人免费视频播放| 日韩欧美一级片| 天天av天天翘天天综合网| 不卡的电视剧免费网站有什么| 欧美成人激情免费网| 五月天国产精品| 一本到不卡免费一区二区| 国产精品精品国产色婷婷| 国产乱国产乱300精品| 欧美v国产在线一区二区三区| 欧美激情一区在线| 99re热视频这里只精品| 日韩va亚洲va欧美va久久| 国产精品另类一区| 欧美一区二区三区在线视频| 成人黄页在线观看| 免费久久精品视频| 成人免费在线观看入口| 日韩欧美一区在线| 色综合久久精品| 精品一区二区三区免费视频| 国产精品大尺度| 欧美zozozo| 在线视频亚洲一区| 国产精品一二三四区| 亚洲v中文字幕| 亚洲欧美一区二区在线观看| 日韩三级视频在线看| 欧洲激情一区二区| 福利电影一区二区| 97超碰欧美中文字幕| 捆绑调教一区二区三区| 性久久久久久久久| 亚洲情趣在线观看| 国产精品少妇自拍| 久久夜色精品国产噜噜av| 欧美二区乱c少妇| 精品视频一区二区不卡| av爱爱亚洲一区| 高清日韩电视剧大全免费| 毛片av一区二区三区| 五月婷婷激情综合网| 亚洲女与黑人做爰| 中文字幕一区二区三区乱码在线| 精品国产91久久久久久久妲己 | 成人毛片在线观看| 精品一区二区免费在线观看| 午夜国产精品影院在线观看| 亚洲激情欧美激情| 日韩一区在线播放| 中文字幕人成不卡一区| 中文字幕不卡三区| 国产精品久久久久久久久图文区 | 91片黄在线观看| 成人18视频在线播放| 国产成人亚洲综合a∨猫咪| 毛片不卡一区二区| 狠狠色丁香久久婷婷综| 精东粉嫩av免费一区二区三区| 日本三级韩国三级欧美三级| 香蕉成人啪国产精品视频综合网| 亚洲欧美一区二区三区久本道91| 国产精品拍天天在线| 中文字幕亚洲一区二区av在线| 国产精品美女久久久久久| 中文字幕av一区 二区| 国产精品国产三级国产普通话三级| 日本一区免费视频| 中文字幕一区二区5566日韩| 成人免费在线播放视频| 麻豆成人久久精品二区三区小说| 久久成人麻豆午夜电影| 国产成人在线电影| www.视频一区| 欧美日韩一区在线观看| 884aa四虎影成人精品一区| 日韩午夜中文字幕| 久久久亚洲精品石原莉奈| 中文一区一区三区高中清不卡| 国产精品大尺度| 午夜成人免费电影| 精品一区二区三区蜜桃| 99久久综合国产精品| 欧美午夜电影在线播放| 日韩无一区二区| 中文字幕av一区二区三区高| 亚洲欧美日韩一区| 免费一级片91| 丰满放荡岳乱妇91ww| 欧美日韩国产综合视频在线观看| 日韩欧美国产综合一区 | 这里只有精品电影| 久久久亚洲午夜电影| 中文字幕一区二区三区不卡在线 | 日本道在线观看一区二区| 欧美精品 日韩| 欧美激情在线免费观看| 亚洲成人资源网| 福利一区福利二区| 欧美一区二区成人| 亚洲日本青草视频在线怡红院| 美女精品自拍一二三四| 97久久久精品综合88久久| 91精品欧美久久久久久动漫 | 国产精品亚洲午夜一区二区三区 | 樱花影视一区二区| 精品一区二区三区在线视频| 一本在线高清不卡dvd| 欧美大片一区二区三区| 亚洲精品高清视频在线观看| 国产最新精品精品你懂的| 欧美日韩成人综合天天影院| 国产精品国模大尺度视频| 久久不见久久见免费视频1| 在线观看亚洲一区| 国产精品久久久久婷婷| 精彩视频一区二区| 91精品欧美久久久久久动漫 | 欧美激情一区二区三区全黄| 日韩和欧美一区二区三区| 91亚洲男人天堂| 久久久精品免费免费| 免费三级欧美电影| 精品视频在线免费观看| 亚洲乱码国产乱码精品精的特点| 国产美女视频一区| 欧美tk—视频vk| 日韩激情一区二区| 欧美日韩精品一区二区三区蜜桃| 成人黄色网址在线观看| 91女厕偷拍女厕偷拍高清| 欧美精品在线观看一区二区| 久久影音资源网| 午夜精品久久久久久不卡8050| 国产一区在线不卡| 欧美日韩国产天堂| 国产精品久久久久久久久免费樱桃 | 国产69精品久久久久毛片 | 日日夜夜一区二区| 成人国产精品免费观看视频| 欧美三级电影精品| 欧美激情综合五月色丁香小说| 亚洲二区在线观看|