void print_backward(bi_node b, bi_node **s) {//从点b向起点反向输出路径 //注意这里递归的使用,输出的顺序是从起点到终点的顺序 if(b.b_fa.first != -1 && b.b_fa.second != -1) print_backward(s[b.b_fa.second][b.b_fa.first], s); cout << " (x:" << b.b_x << ",y:" << b.b_y << ")" << endl; }
int main(void) { print_backward(0); putchar('\n'); return 0; }
void print_backward(int pos) { if(pos == LEN){ return; } print_backward(pos+1); putchar(buf[pos]); }
void print_road(pair<bi_node, bi_node> meet_pos, bi_node **s) {//meet_pos中是两队列相遇处的两节点 //其中first是q_beg队列中的节点,second是q_end队列中的节点 //这两个点是相邻的 //输出路径时向后递归逆序输出q_beg的路径,向前顺序输出q_end的路径 print_backward(s[meet_pos.first.b_y][meet_pos.first.b_x], s); print_forward(s[meet_pos.second.b_y][meet_pos.second.b_x], s); }
void dfs_rec(struct graph *g, unsigned v, unsigned p, unsigned pre[], unsigned *c) { *c = *c + 1; pre[v] = *c; unsigned *sname = NULL; for_successors(g, v, sname) { if (pre[*sname] > g->order) { pre[*sname] = *c; print_discovery(v, *sname); dfs_rec(g, *sname, v, pre, c); } else if ((p != *sname) && (pre[v] > pre[*sname])) print_backward(v, *sname); } }
int main(void) { int wartosc; int pozycja; int flaga=1; int wyb; lista *test=stworz(); while(flaga==1) { druk_menu(999); scanf("%d", &wyb); system("cls"); druk_menu(wyb); switch(wyb) { case 1: printf("podaj wartosc: "); scanf("%d", &wartosc); push_front(test, wartosc); printf("umieszczono na liscie\n"); break; case 2: printf("podaj wartosc: "); scanf("%d", &wartosc); push_back(test, wartosc); printf("umieszczono na liscie\n"); break; case 3: printf("podaj wartosc: "); scanf("%d", &wartosc); printf("podaj pozycja: "); scanf("%d", &pozycja); if(pozycja<=test->rozmiar && pozycja>0) { insert(test, pozycja, wartosc); printf("umieszczono na liscie\n"); } else printf("pozycja ktora wybrales jest niewlasciwa\nlub na liscie jesty tylko jeden element\n"); break; case 4: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("twoja liczba to: %d\n", pop_front(test)); } break; case 5: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("twoja liczba to: %d\n", pop_back(test)); } break; case 6: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("podaj pozycje: "); scanf("%d", &pozycja); if(pozycja<=test->rozmiar && pozycja>0) printf("twoja liczba to: %d\n", remove_l(test, pozycja)); else printf("pozycja ktora wybrales jest niewlasciwa\n"); } break; case 7: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("podaj pozycje: "); printf("twoja liczba to: %d\n", front(test)); } break; case 8: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("podaj pozycje: "); printf("twoja liczba to: %d\n", back(test)); } break; case 9: if(isEmpty(test)) printf("lista jest pusta\n"); else { printf("podaj pozycje: "); scanf("%d", &pozycja); if(pozycja<=test->rozmiar && pozycja>0) printf("twoja liczba to: %d\n", at(test, pozycja)); else printf("pozycja ktora wybrales jest niewlasciwa\n"); } break; case 10: clear(test); printf("lista wyczyszczona\n"); break; case 11: printf("rozmiar listo wynosi: %d\n", size(test)); break; case 12: if(isEmpty(test)) printf("lista jest pusta\n"); else printf("lista posiada elementy\n"); break; case 13: if(isEmpty(test)) printf("lista jest pusta\n"); else printf("adres pierwszego elementu to %p\n", begin(test)); break; case 14: if(isEmpty(test)) printf("lista jest pusta\n"); else printf("adres ostatniego elementu to %p\n", end(test)); break; case 15: if(isEmpty(test)) printf("lista jest pusta\n"); else print_forward(test); break; case 16: if(isEmpty(test)) printf("lista jest pusta\n"); else print_backward(test); break; case 0: flaga=0; break; default: printf("wybrales zle\nsprobuj ponownie\n"); break; } printf("\n> > > potwierdz enterem < < <\n"); fflush(stdin); getchar(); system("cls"); } destroy(test); return 0; }
int main(){ int options; printf("\nWelcome to The Song Database."); while (options != 5) { options = intro(); if (options == 1) { char* artist; char* album; char* song_title; char* date; char* song_time_char; int song_time; artist = malloc (MAX_SIZE); album = malloc (MAX_SIZE); song_title = malloc (MAX_SIZE); date = malloc (MAX_SIZE); song_time_char = malloc (MAX_SIZE); printf ("\nPlease enter the artist name: "); fgets (artist, MAX_SIZE, stdin); if ((strlen(artist)>0) && (artist[strlen (artist) - 1] == '\n')) artist[strlen (artist) - 1] = '\0'; printf ("Please enter the album name: "); fgets (album, MAX_SIZE, stdin); if ((strlen(album)>0) && (album[strlen (album) - 1] == '\n')) album[strlen (album) - 1] = '\0'; printf("Please enter the song title: "); fgets (song_title, MAX_SIZE, stdin); if ((strlen(song_title)>0) && (song_title[strlen (song_title) - 1] == '\n')) song_title[strlen (song_title) - 1] = '\0'; printf("Please enter the date: "); fgets (date, MAX_SIZE, stdin); if ((strlen(date)>0) && (date[strlen (date) - 1] == '\n')) date[strlen (date) - 1] = '\0'; printf("Please enter song time: "); fgets(song_time_char, MAX_SIZE, stdin); if ((strlen(song_time_char)>0) && (song_time_char[strlen (song_time_char) - 1] == '\n')) song_time_char[strlen (song_time_char) - 1] = '\0'; song_time = atoi(song_time_char); pushItem(artist, album, song_title, date, song_time); free(artist); free(album); free(song_title); free(date); free(song_time_char); } else if (options == 2) { delete_artist(); } else if (options == 3) { if (head == NULL) { printf("\nNo entries found\n"); } else { printf("\nPrinting it forward:\n"); print_forward(head); } } else if (options == 4) { if (head == NULL) { printf("\nNo entries found\n"); } else { printf("\nPrinting it backward\n"); print_backward(tail); } } else if (options == 5) { freeEverything(head); printf("\nGoodbye.\n"); break; } else { printf("\nNo Valid Input\n"); } } return 0; }