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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? treeprint.w

?? 著名算法大師高爺爺設(shè)計(jì)的語(yǔ)言。此語(yǔ)言結(jié)合了Tex和C
?? W
字號(hào):
\def\covernote{Copyright 1987 Norman Ramsey -- Princeton University}\def\vbar{\.{|}}@*Directory Trees.Our object is to print out a directory hierarchy in some pleasant way.The program takes output from {\tt find * -type d -print \vbar\ sort}@^system dependencies@>and produces a nicer-looking listing.More precisely, our input, which is the output of {\tt find} followedby {\tt sort}, is a list of fully qualified directory names (parentand child separated by slashes |'/'|); everything has already beensorted nicely into lexicographic order.The {\tt treeprint} routine takes one option, |"-p"|, which tells itto use the printer's line-drawing set, rather than the terminal's.@c@<Global definitions@>@;@<Global include files@>@;@<Global declarations@>@;@#main(argc, argv)     int argc;     char **argv;{@<|main| variable declarations@>;@<Search for options and set special characters on |"-p"|@>;@<Read output from find and enter into tree@>;@<Write tree on standard output@>@;exit(0);}@We make all the siblings of a directory a linked list off of its left child, and the offspring a linked list off the right side.Data are just directory names.@d sibling left@d child right@<Global decl...@>=typedef struct tnode {  struct tnode *left, *right;  char *data;} TNODE;@ @<|main| variable...@>=struct tnode *root=NULL;@*Input.Reading the tree is simple---we read one line at a time, and call on the recursive |add_tree| procedure.@cread_tree (fp, rootptr)   FILE *fp;   struct tnode **rootptr;{   char buf[255], *p;   while ((fgets(buf, 255, fp))!=NULL) {     @<If |buf| contains a newline, make it end there@>;     add_tree(rootptr, buf);   } }@ @<Global include...@>=#include <stdio.h>@ Depending what system you're on, you may or may not get a newline in |buf|.@<If |buf| contains a newline...@>=     p=buf; while (*p!='\0'&&*p!='\n') p++;@^system dependencies@>     *p='\0';@ To add a string, we split off the first part of the name and insert it into the sibling list. We then do the rest of the string as a child of the new node.@cadd_tree(rootptr, p)     struct tnode **rootptr;     char *p;{     char *s;     int slashed;     if (*p=='\0') return;@<Break up the string so |p| is the first word,     |s| points at null-begun remainder,    and |slashed| tells whether |*s=='/'| on entry@>;     if (*rootptr==NULL) {@<Allocate new node to hold string of size |strlen(p)|@>;       strcpy((*rootptr)->data,p);     }      if (strcmp((*rootptr)->data,p)==0) {           if (slashed) ++s;           add_tree(&((*rootptr)->child),s);	 }       else {           if (slashed) *s='/';           add_tree(&((*rootptr)->sibling),p);	 }   }@ We perform some nonsense to cut off the string |p| so that |p| justholds the first word of a multiword name. Variable |s| points at whatwas either the end of |p| or a slash delimiting names. In either case|*s| is made |'\0'|.  Later, depending on whether we want to pass thewhole string or the last piece, we will restore the slash or advance|s| one character to the right.@<Break up...@>=     for (s=p;*s!='\0'&&*s!='/';) s++;     if (*s=='/') {       slashed=1;       *s='\0';     } else slashed=0;@ Node allocation is perfectly standard \dots@<Allocate new node...@>=       *rootptr=(struct tnode *) malloc (sizeof(struct tnode));       (*rootptr)->left = (*rootptr)->right = NULL;       (*rootptr)->data = malloc (strlen(p)+1);@@<Global decl...@>= char *malloc();@ In this simple implementation, we just read from standard input.@<Read...@>= read_tree(stdin,&root);@*Output.We begin by defining some lines, tees, and corners.The |s| stands for screen and the |p| for printer.You will have to change this for your line-drawing set.@^system dependencies@>@<Global definitions@>=#define svert '|'#define shoriz '-'#define scross '+'#define scorner '\\' /* lower left corner */#define pvert '|'#define phoriz '-'#define pcross '+'#define pcorner '\\' /* lower left corner */@ The default is to use the terminal's line drawing set.@<Global declarations@>=char vert=svert;char horiz=shoriz;char cross=scross;char corner=scorner;@ With option |"-p"| use the printer character set.@<Search for options...@>=while (--argc>0) {  if (**++argv=='-') {    switch (*++(*argv)) {      case 'p':         vert=pvert;        horiz=phoriz;        cross=pcross;        corner=pcorner;	break;      default:        fprintf(stderr,"treeprint: bad option -%c\n",**argv);	break;      }  }}@ We play games with a character stack to figure out when to put in verticalbars.A vertical bar connects every sibling with its successor, but the last siblingin a list is followed by blanks, not by vertical bars. The state of bar-ness or space-ness for each preceding sibling is recorded in the |indent_string| variable, one character (bar or blank) per sibling.@<Global decl...@>=char indent_string[100]="";@  Children get printed before siblings.We don't bother trying to bring children up to the same line as their parents,because the \UNIX/ filenames are so long.We define a predicate telling us when a sibling is the last in a series.@d is_last(S) (S->sibling==NULL)@cprint_node(fp, indent_string, node)     FILE *fp;     char *indent_string;     struct tnode *node;{  char string[255];     int i;     char *p, *is;  if (node==NULL) {  }  else {    *string='\0';    for (i=strlen(indent_string); i>0; i--)       strcat(string,@,      " |  ");    strcat(string,@t\ \ @>  " +--");@<Replace chars in |string| with chars from          line-drawing set and from |indent_string|@>;    fprintf(fp,"%s%s\n",string,node->data);@#    /* Add vertical bar or space for this sibling (claim |*is=='\0'|) */    *is++ = (is_last(node) ? ' ' : vert);    *is='\0';       print_node(fp, indent_string, node->child); /* extended |indent_string| */    *--is='\0';    print_node(fp, indent_string, node->sibling); /* original |indent_string| */  }}@ For simplicity, we originally wrote connecting lines with |'|'|, |'+'|, and|'-'|.Now we replace those characters with appropriate characters from the line-drawing set. We take the early vertical bars and replace them with characters from|indent_string|, and we replace the other characters appropriately.We are sure to put a |corner|, not a |cross|, on the last sibling in a group.@<Replace chars...@>=    is=indent_string;    for (p=string; *p!='\0'; p++) switch(*p) {       case '|': *p=*is++; break;       case '+': *p=(is_last(node) ? corner : cross); break;       case '-': *p=horiz; break;       default: break;	       }@ For this simple implementation, we just write on standard output.@<Write...@>= print_node(stdout, indent_string, root);@*Index.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久66| 老司机免费视频一区二区三区| 亚洲一区二区在线播放相泽| 首页亚洲欧美制服丝腿| 精品一区二区在线看| 99久久99精品久久久久久 | 亚洲第一会所有码转帖| 久久国产精品99久久人人澡| gogo大胆日本视频一区| 欧美在线高清视频| 久久综合国产精品| 一级日本不卡的影视| 国产一区久久久| 在线免费一区三区| 久久亚洲综合色一区二区三区| 亚洲精品伦理在线| 狠狠色丁香婷婷综合| 欧美性色黄大片| 国产色产综合色产在线视频| 性做久久久久久久免费看| 东方欧美亚洲色图在线| 欧美猛男男办公室激情| 国产精品少妇自拍| 美女久久久精品| 日本韩国一区二区三区| 久久婷婷久久一区二区三区| 午夜私人影院久久久久| av激情综合网| 精品国产乱码久久久久久免费| 亚洲一区欧美一区| av激情亚洲男人天堂| 精品久久久久99| 午夜伦欧美伦电影理论片| 波多野结衣中文一区| 精品伦理精品一区| 亚洲va天堂va国产va久| 91视频观看视频| 日本一区二区三区dvd视频在线| 日韩黄色免费电影| 在线亚洲免费视频| 中文字幕中文在线不卡住| 国产一区美女在线| 日韩三级.com| 婷婷激情综合网| 91黄色在线观看| 国产精品久久久久久久蜜臀| 韩国精品久久久| 91精品婷婷国产综合久久性色 | 91精品福利在线| 国产精品嫩草影院av蜜臀| 久久99精品久久久久久国产越南 | 婷婷成人综合网| 一本一道久久a久久精品| 中文字幕不卡三区| 国产精品一区二区91| 欧美一级片免费看| 日本伊人色综合网| 欧美精品久久一区| 日韩综合在线视频| 欧美日韩一区中文字幕| 亚洲午夜日本在线观看| 一本在线高清不卡dvd| 亚洲欧美一区二区视频| 成人午夜在线视频| 中文字幕免费不卡在线| 国产成人自拍在线| 欧美激情一区不卡| 成人午夜看片网址| 综合欧美一区二区三区| 99re热这里只有精品视频| 国产精品盗摄一区二区三区| 成人性生交大片免费看视频在线| 久久婷婷国产综合国色天香| 国产一区二区免费视频| 国产欧美精品一区aⅴ影院 | 国产亚洲污的网站| 国产剧情一区二区| 欧美国产激情一区二区三区蜜月| 国产盗摄精品一区二区三区在线 | 99在线精品观看| 中文字幕中文在线不卡住| 91影院在线观看| 一区二区三区欧美久久| 欧美日韩精品免费观看视频| 五月综合激情日本mⅴ| 欧美一区二区三区思思人| 热久久免费视频| 久久婷婷国产综合精品青草| 成人激情文学综合网| 亚洲日本va在线观看| 欧美专区日韩专区| 日本午夜精品一区二区三区电影 | 国产福利一区在线| 亚洲国产精华液网站w| 色综合网色综合| 五月天一区二区| 欧美成人aa大片| 成人免费视频免费观看| 亚洲欧美激情插| 欧美另类一区二区三区| 黑人精品欧美一区二区蜜桃| 国产精品久线观看视频| 精品视频在线免费看| 久久成人免费网| 国产精品毛片高清在线完整版 | 亚洲不卡av一区二区三区| 欧美电影免费观看完整版| 岛国精品在线观看| 一区二区三区日韩| 日韩精品一区二区三区视频播放| 岛国av在线一区| 亚洲成年人网站在线观看| 精品成人在线观看| 91在线视频官网| 日韩在线一区二区| 国产精品传媒视频| 欧美一二三区在线观看| 99综合电影在线视频| 青娱乐精品在线视频| 国产精品国产三级国产a| 欧美日本视频在线| 丁香六月久久综合狠狠色| 日欧美一区二区| 亚洲欧美在线视频| 精品国产一区久久| 欧美国产精品专区| 91麻豆福利精品推荐| 精品一区二区三区免费播放| 亚洲免费在线视频| 精品免费一区二区三区| 在线观看国产精品网站| 国产成人一区二区精品非洲| 午夜av电影一区| 1000精品久久久久久久久| 日韩美女天天操| 欧美午夜免费电影| 成人污视频在线观看| 免费欧美高清视频| 亚洲裸体在线观看| 日本一区二区三级电影在线观看| 7777精品久久久大香线蕉| 91美女视频网站| 国产成人综合网| 久久99蜜桃精品| 亚洲bt欧美bt精品| 亚洲精品中文字幕在线观看| 国产三级一区二区三区| 欧美一区二区三区在| 欧洲另类一二三四区| 99久久亚洲一区二区三区青草| 久久99国产精品尤物| 视频一区中文字幕| 一区二区三区四区五区视频在线观看| 国产亚洲午夜高清国产拍精品| 欧美一区二区免费| 欧美人牲a欧美精品| 色悠久久久久综合欧美99| 风间由美性色一区二区三区| 韩国女主播一区| 日本成人中文字幕在线视频| 亚洲综合视频在线观看| 亚洲婷婷在线视频| 国产精品成人午夜| 亚洲国产精品ⅴa在线观看| 久久伊人蜜桃av一区二区| 日韩欧美国产综合一区| 91 com成人网| 欧美人体做爰大胆视频| 欧美日韩精品一区视频| 欧美性色黄大片| 欧美午夜不卡视频| 欧美中文一区二区三区| 欧美在线观看一区二区| 在线精品视频免费观看| 一本久久a久久精品亚洲| 99热国产精品| 99精品欧美一区二区三区综合在线| 国产福利不卡视频| 风流少妇一区二区| 成人午夜视频网站| 99久久精品免费| 91影视在线播放| 在线免费观看不卡av| 欧美三级欧美一级| 6080午夜不卡| 日韩三级精品电影久久久| 精品精品国产高清一毛片一天堂| 欧美变态tickle挠乳网站| 精品国产一区二区在线观看| 337p日本欧洲亚洲大胆精品| 久久综合九色综合欧美就去吻| 精品成人一区二区三区四区| 国产色婷婷亚洲99精品小说| 国产精品妹子av| 综合激情网...| 夜夜亚洲天天久久| 日韩福利电影在线| 国产一区999| 7777女厕盗摄久久久| 日韩不卡一区二区|