fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6.  
  7. typedef struct Element //tworze swó nowy typ
  8. {
  9. char *Text;//przechowywany tekst
  10. struct Element *next;//wskaźnik na następny elment listy
  11. } elementListy;
  12.  
  13.  
  14.  
  15.  
  16. void wypisz_liste(elementListy *lista) // na wejsciu mamy wskaźnik na pierwszy element listy
  17. {
  18. elementListy *wsk=lista;
  19. while( wsk != NULL ) //wypisujemy wszystkie elementy listy od pierwszego do ostatniego
  20. {
  21. printf ("%s\n", wsk->Text);
  22. wsk = wsk->next;//przejscie do kolejnego elementu listy czyli ustawienie wskaźnika na nastepny element
  23. }
  24. }
  25.  
  26. void dodaj_do_listy (elementListy *lista, char *Text)//pierwszy parametr wskaźnik na pierwszy element, drugi parametr to jes tekst
  27. {
  28. elementListy *wsk, *nowy;//wskaźniki pomocniczen
  29. wsk = lista;
  30. while (wsk->next != NULL)//przechodzimy liste az uzyskamy wskaźnik na ostatni element
  31. {
  32. wsk = wsk->next;
  33. }
  34.  
  35.  
  36. nowy =(elementListy*) malloc (sizeof(elementListy)); //rezerwujemy pamiec - tworzymy nowy element listy
  37. nowy->Text = Text;
  38.  
  39.  
  40.  
  41. // nowy->Text = Text;
  42. nowy->next = NULL; //jezeli jest na koncu listy no to musi byc null
  43.  
  44. wsk->next = nowy; //poprzedni wskazuje na ostatni element
  45.  
  46. }
  47.  
  48.  
  49. void odwroc (elementListy *head)//jako parametr wskaznik na pierwszy elemnt listy
  50. {
  51. elementListy *a=head->next; // aktualny
  52. elementListy *p=NULL; // poprzedni
  53. elementListy *n=NULL; // nastepny
  54.  
  55. while (a!=NULL){
  56. n=a->next;
  57. a->next=p;
  58. p=a;
  59. a=n;
  60. }
  61.  
  62. head->next=p;
  63. }
  64.  
  65. elementListy *first; // pierwszy element
  66.  
  67. int main() {
  68.  
  69.  
  70. first =(elementListy*) malloc (sizeof(elementListy));
  71. first->next=NULL;
  72. first->Text=NULL;
  73.  
  74. char* wejscie;
  75. char* napis;
  76.  
  77. int maksik=123;
  78.  
  79.  
  80. int cos=1;
  81. while(cos)
  82. {
  83. napis = (char*) malloc (maksik);
  84. wejscie = fgets (napis, maksik, stdin);
  85. if(strcmp(napis, "\n")==0)//pojedyncza spacja lub tekst zaczynajacy sie od spacji konczy wejscie
  86. break;
  87.  
  88. dodaj_do_listy(first,wejscie);
  89. }
  90.  
  91. odwroc(first);
  92. wypisz_liste(first);
  93.  
  94.  
  95. return 0;
  96. }
Time limit exceeded #stdin #stdout 5s 6508KB
stdin
Standard input is empty
stdout
Standard output is empty