fork(3) download
  1. #include <cstdio>
  2.  
  3. struct kolejka
  4. {
  5. int priorytet;
  6. kolejka *next;
  7. };
  8. void dodaj(kolejka *&start, char znak);
  9. void wypisz(kolejka *&start);
  10. void usunwszo(kolejka *&start);
  11.  
  12. void starter()
  13. {
  14. kolejka *start = NULL;
  15. int element;
  16. element = getchar();
  17. while(element>='A' && element <= 'z')
  18. {
  19. dodaj(start,element);
  20. element = getchar();
  21. }
  22. wypisz(start);
  23. usunwszo(start);
  24. }
  25. int main()
  26. {
  27. // kolejka *start = NULL;
  28. int t;
  29. char x;
  30. scanf("%d",&t);
  31. x=getchar(); //ABY USUNAC '0' Z TESTOW
  32. while(t--) starter();
  33. return 0;
  34. }
  35.  
  36. void dodaj(kolejka *&start, char znak)
  37. {
  38. int prior = int(znak);
  39. if(!start)
  40. {
  41. start = new kolejka;
  42. start->priorytet = prior;
  43. start->next = NULL;
  44. }
  45. else if(start->priorytet < prior)
  46. {
  47. usunwszo(start);
  48. start = new kolejka;
  49. start->priorytet = prior;
  50. start->next = NULL;
  51. }
  52. else
  53. {
  54. kolejka *p=start, *temp;
  55. while((p->next) && (prior < p->next->priorytet))
  56. {
  57. p=p->next;
  58. }
  59. temp = new kolejka;
  60. temp->priorytet = prior;
  61. temp->next = p->next;
  62. p->next = temp;
  63. usunwszo(temp->next);
  64. }
  65. }
  66. void wypisz(kolejka *&start)
  67. {
  68. kolejka *p = start;
  69. if(p)
  70. {
  71. while(p)
  72. {
  73. printf("%c",p->priorytet);
  74. p=p->next;
  75. }
  76. printf("\n");
  77. }
  78. // else cout<<"Kolejka jest pusta :/\n";
  79. }
  80.  
  81. void usunwszo(kolejka *&start)
  82. {
  83. kolejka *p;
  84. while(start)
  85. {
  86. p = start;
  87. start=start->next;
  88. delete p;
  89. }
  90. }
  91.  
Success #stdin #stdout 0s 2876KB
stdin
2
klkkn
klKKnNLlNL
stdout
n
nlNL