void main (int argc, char *argv[]) { Parser *p; Document *d; char *t; char *text; int h; struct stat stats; d = DocumentNew (); d->root = ElementNew (); d->root->anonymous = ANON_BOX; d->root->document = d; DocumentAddTagHandler (d, tagHandler, NULL); DocumentAddLinkHandler (d, linkHandler, NULL); p = ParserNew (); p->document = d; p->startElement = d->root; if (argc > 1) { lstat (argv[1], &stats); text = malloc (stats.st_size + 1); h = open (argv[1], O_RDONLY); read (h, text, stats.st_size); close (h); text[stats.st_size] = '\0'; } else { text = XkNewString ("<h1>Hello World <![CDATA[Hello, world]]></h1>"); } ParserProcessData (p, "text/html", text); free (text); NodePrint (d->root, 0); t = NodeToText (d); puts (t); free (t); NodeDelete ((Node *) d); ParserDelete (p); }
// Поиск в ширину (FIFO) int TreeSearch(){ int i,j; node *n = NodeCreate(start_i,start_j,NULL,0,NOTHING); array arr; queue *h = QueueCreate(); QueueAdd(h,n); while(!QueueIsEmpty(h)){ n = QueueGet(h); if(NodeIsFinish(n)){ while(n->parent != NULL){ NodePrint(n); field[n->state[0]][n->state[1]] = USED; n = n->parent; } field[n->state[0]][n->state[1]] = USED; printf("\nКарта пути:\n"); printf("\"X\" - Препятствие\n"); printf("\".\" - Свободная ячейка\n"); printf("\"*\" - Путь робота\n\n"); for(i = 0; i<SIZE; i++){ for(j = 0; j<SIZE; j++){ if(field[i][j] == FREE)printf("."); if(field[i][j] == OBSTACLE)printf("X"); if(field[i][j] == USED)printf("*"); } printf("\n"); } free(h); return 0; } //если решение еще не нашлось, то заново записываем переферию arr = Expand(n); for(i = 0; i < arr.size; i++){ QueueAdd(h, arr.arr[i]); } } printf("Can't find solution\n"); free(h); return 0; }