Beispiel #1
0
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);
}
Beispiel #2
0
// Поиск в ширину (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;
}