Dynamicky alokované seznamy v jazyce C
Z Milan Kerslager
#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).