int main () { lista lis=NULL; lis = dolacz("abc", dolacz("def", dolacz("ghi", lis))); druk(odwroc(lis)); return 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; }
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; }