Другие языки программирования и технологии

Кто может объяснить что происходит в программе си

#include
#include

/* letters linked list */
struct node {
char data;
struct node *next;
} list[] = {
'T', list + 1,
'E', list + 2,
'S', list + 3,
'T', list + 4,
'R', list + 5,
'I', list + 6,
'n', list + 7,
'g', list + 8,
'o', list + 9,
'a', NULL
};

/* vowels and consonants linked lists */
struct node2 {
struct node *letter;
struct node2 *next;
} vowels[] = {
list + 1, vowels + 1,
list + 5, vowels + 2,
list + 8, vowels + 3,
list + 9, NULL
}, consonants[] = {
list, consonants + 1,
list + 2, consonants + 2,
list + 3, consonants + 3,
list + 4, consonants + 4,
list + 6, consonants + 5,
list + 7, NULL
};

int main() {
struct node2 *p;
/* print vowels */
for (p = vowels; p; p = p->next)
printf("(%c)->", p->letter->data);
printf("\n");
/* print consonants */
for (p = consonants; p; p = p->next)
printf("(%c)->", p->letter->data);
printf("\n");
return 0;
}
Чем тебя все предыдущие ответы не устраивают? Стопицотый раз одно и то же спрашиваешь.
Илья Березен
Илья Березен
29 336
Лучший ответ
/* letters linked list */
struct node {
char data;
struct node *next;
} list[] = {
'T', list + 1,
'E', list + 2,
'S', list + 3,
'T', list + 4,
'R', list + 5,
'I', list + 6,
'n', list + 7,
'g', list + 8,
'o', list + 9,
'a', NULL
};
// объявили массив структур, состоящих из букв и указателей, и инициализировали его
// значениями букв и указателей на следующие элементы массива
/* vowels and consonants linked lists */
struct node2 {
struct node *letter;
struct node2 *next;
} vowels[] = {
list + 1, vowels + 1,
list + 5, vowels + 2,
list + 8, vowels + 3,
list + 9, NULL
}, consonants[] = {
list, consonants + 1,
list + 2, consonants + 2,
list + 3, consonants + 3,
list + 4, consonants + 4,
list + 6, consonants + 5,
list + 7, NULL
};
// объявили массивы структур для хранения указателей на гласные и согласные и на
// следующие элементы этих массивов, и инициализировали их значениями указателей
int main() {
struct node2 *p; // объявили указатель на node2
/* print vowels */
for (p = vowels; p; p = p->next) printf("(%c)->", p->letter->data); // распечатали гласные
printf("\n");
/* print consonants */
for (p = consonants; p; p = p->next) printf("(%c)->", p->letter->data); // распечатали согласные
printf("\n");
return 0;
}
Асхат Джусупов
Асхат Джусупов
53 481