Dynamicky alokované seznamy v jazyce C: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
(Založení článku)
 
m (Syntax on)
Řádka 1: Řádka 1:
#include <stdio.h>
+
<source lang="c">
#define MAX 10
+
#include <stdio.h>
typedef struct struct_polozka {
+
#define MAX 10
        long int data;
+
typedef struct struct_polozka {
        struct struct_polozka *dalsi;
+
        long int data;
} polozka;
+
        struct struct_polozka *dalsi;
+
} polozka;
int main()
+
 
{
+
int main()
        polozka *prvni, *aktualni;
+
{
        char buffer[MAX];
+
        polozka *prvni, *aktualni;
        // alokace (prvni) polozky
+
        char buffer[MAX];
        prvni = malloc(sizeof(polozka));
+
        // alokace (prvni) polozky
        prvni->data = 0;
+
        prvni = malloc(sizeof(polozka));
        prvni->dalsi = NULL;
+
        prvni->data = 0;
        aktualni = prvni;
+
        prvni->dalsi = NULL;
        // naplneni polozek
+
        aktualni = prvni;
        while (fgets(buffer,MAX,stdin) != NULL) {
+
        // naplneni polozek
                aktualni->data = strtol(buffer,NULL,10);
+
        while (fgets(buffer,MAX,stdin) != NULL) {
                aktualni->dalsi = malloc(sizeof(polozka));
+
                aktualni->data = strtol(buffer,NULL,10);
                aktualni = aktualni->dalsi;
+
                aktualni->dalsi = malloc(sizeof(polozka));
                aktualni->data = 0;
+
                aktualni = aktualni->dalsi;
                aktualni->dalsi = NULL;
+
                aktualni->data = 0;
        }
+
                aktualni->dalsi = NULL;
        // vypsani polozek
+
        }
        aktualni = prvni;
+
        // vypsani polozek
        while (aktualni->dalsi != NULL) {
+
        aktualni = prvni;
                static int i=1;
+
        while (aktualni->dalsi != NULL) {
                printf("polozka %d: %ld\n", i++, aktualni->data);
+
                static int i=1;
                aktualni = aktualni->dalsi;
+
                printf("polozka %d: %ld\n", i++, aktualni->data);
        }
+
                aktualni = aktualni->dalsi;
}
+
        }
 +
}
 +
</source>
  
 
== Cvičení ==
 
== Cvičení ==

Verze z 7. 9. 2008, 12:53

#include <stdio.h>
#define MAX 10
typedef struct struct_polozka {
        long int data;
        struct struct_polozka *dalsi;
} polozka;

int main()
{
        polozka *prvni, *aktualni;
        char buffer[MAX];
        // alokace (prvni) polozky
        prvni = malloc(sizeof(polozka));
        prvni->data = 0;
        prvni->dalsi = NULL;
        aktualni = prvni;
        // naplneni polozek
        while (fgets(buffer,MAX,stdin) != NULL) {
                aktualni->data = strtol(buffer,NULL,10);
                aktualni->dalsi = malloc(sizeof(polozka));
                aktualni = aktualni->dalsi;
                aktualni->data = 0;
                aktualni->dalsi = NULL;
        }
        // vypsani polozek
        aktualni = prvni;
        while (aktualni->dalsi != NULL) {
                static int i=1;
                printf("polozka %d: %ld\n", i++, aktualni->data);
                aktualni = aktualni->dalsi;
        }
}

Cvičení

Příklad 1
Napište program, který do paměti načte zadaný soubor a pak jej teprve vypíše.
Příklad 2
Napište program, který vypíše zadaný soubor s obráceným pořadím řádků (jako program tac).