Dynamicky alokované seznamy v jazyce C: Porovnání verzí
Z Milan Kerslager
(Založení článku) |
m (Syntax on) |
||
Řádka 1: | Řádka 1: | ||
− | + | <source lang="c"> | |
− | + | #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; | |
− | + | } | |
+ | } | ||
+ | </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).