int main () {
  lista lis=NULL;
  lis = dolacz("abc", dolacz("def", dolacz("ghi", lis)));
  druk(odwroc(lis));
  
  return 0;
}
Beispiel #2
0
lista odwroc(lista lis) {
  // odwraca liste  lis  od konca
  lista pom = NULL;
  char slowo[MAX_DL_SLOWA];
  while (! pusta(lis)) {
    strcpy(slowo, pierwsze(lis)); lis = reszta(lis);
    pom = dolacz(slowo, pom);
  }
  return pom;
}
Beispiel #3
0
int main()
{
    short int i, j, sw, sk, d;
    (void) scanf("%hd %hd\n", &m, &n);
    char tab2[2020];

    init(&Q);

    for(i = 0; i < n; i++) {
	(void) fgets(tab2, sizeof(tab2), stdin);
        for(j = 0; j < m; j++) {
            nodes[i][j].pole = tab2[j];
            nodes[i][j].vis = 0;
            if(nodes[i][j].pole == 'P') {
                u.w = i;
		u.k = j;
		u.dist = 0;
                u.vis = 1;
                dolacz(u,&Q);
            }
            if(nodes[i][j].pole == 'S') {
                sw = i;
                sk = j;
            }
        }
    }

    while(!pusta(&Q)) {// printf("tu");
        u = usun(&Q);
        if(adj(u.w+1, u.k)) {
            d = u.w+1;
	    a.pole = nodes[d][u.k].pole;
            a.vis  = nodes[d][u.k].vis = 1;
            a.dist = u.dist + 1;
	    a.w = d;
	    a.k = u.k;
            dolacz(a, &Q);
            if(a.pole == 'S') {
                printf("%d",  a.dist);
                break;
            }
        }
        if(adj(u.w-1, u.k)) {
            d = u.w-1;
	    a.pole = nodes[d][u.k].pole;
            a.vis = nodes[d][u.k].vis = 1;
            a.dist = u.dist + 1;
	    a.w = d;
	    a.k = u.k;
            dolacz(a, &Q);
            if(a.pole == 'S') {
                printf("%d",  a.dist);
                break;
            }
        }
        if(adj(u.w, u.k+1)) {
            d = u.k+1;
	    a.pole = nodes[u.w][d].pole;
            a.vis = nodes[u.w][d].vis = 1;
            a.dist = u.dist + 1;
	    a.w = u.w;
	    a.k = d;
            dolacz(a, &Q);
            if(a.pole == 'S') {
                printf("%d",  a.dist);
                break;
            }
        }
        if(adj(u.w, u.k-1)) {
            d = u.k-1;
	    a.pole = nodes[u.w][d].pole;
            a.vis = nodes[u.w][d].vis = 1;
            a.dist = u.dist + 1;
	    a.w = u.w;
	    a.k = d;
             dolacz(a, &Q);
            if(a.pole == 'S') {
                printf("%d",  a.dist);
                break;
            }
        }
    }

    if(nodes[sw][sk].vis == 0) printf("NIE");

    return 0;
}