fork download
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. typedef struct osoba
  7. {
  8. char nazwisko[32];
  9. char imie[24];
  10. struct osoba *nxt,*prev;
  11. } psymbol,*ppsymbol;
  12.  
  13. ppsymbol sym_end=NULL,sym_beg=NULL;
  14.  
  15. int compare(ppsymbol a,ppsymbol b)
  16. {
  17. int v=strcmp(a->nazwisko,b->nazwisko);
  18. return v?v:strcmp(a->imie,b->imie);
  19. }
  20.  
  21. void DodajOsobe(ppsymbol data) // data już wprowadzone, sprawdzone, wypełnione
  22. {
  23. ppsymbol next,prev;
  24. for(next=sym_beg,prev=0;(next)&&(compare(data,next)>0);next=prev->nxt) prev=next;
  25. data->prev=prev;
  26. data->nxt=next;
  27. //if(prev) prev->nxt=data; else sym_beg=data; // specjalnie dla Furious Programming zamieniam dwa wiersze na jeden i bez warunku
  28. //if(next) next->prev=data; else sym_end=data; // specjalnie dla Furious Programming zamieniam dwa wiersze na jeden i bez warunku
  29. (prev?prev->nxt:sym_beg)=(next?next->prev:sym_end)=data;
  30. }
  31.  
  32. void show()
  33. {
  34. ppsymbol i;
  35. for(i=sym_beg;i;i=i->nxt) printf("%s %s\n",i->nazwisko,i->imie);
  36. printf("\n");
  37. }
  38.  
  39. ppsymbol newOne(const char *nazwisko,const char *imie)
  40. {
  41. ppsymbol tmp;
  42. tmp=(ppsymbol)malloc(sizeof(psymbol));
  43. strcpy(tmp->nazwisko,nazwisko);
  44. strcpy(tmp->imie,imie);
  45. return tmp;
  46. }
  47.  
  48. int main()
  49. {
  50. DodajOsobe(newOne("Kowalski","Jan")); show();
  51. DodajOsobe(newOne("Xinski","Adam")); show();
  52. DodajOsobe(newOne("Sikorski","Piotr")); show();
  53. DodajOsobe(newOne("Einstein","Albert")); show();
  54. DodajOsobe(newOne("Einstein","Robert")); show();
  55. DodajOsobe(newOne("Kowalski","Arkadiusz")); show();
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Kowalski Jan

Kowalski Jan
Xinski Adam

Kowalski Jan
Sikorski Piotr
Xinski Adam

Einstein Albert
Kowalski Jan
Sikorski Piotr
Xinski Adam

Einstein Albert
Einstein Robert
Kowalski Jan
Sikorski Piotr
Xinski Adam

Einstein Albert
Einstein Robert
Kowalski Arkadiusz
Kowalski Jan
Sikorski Piotr
Xinski Adam