Если приходит символ, то запустить блок создания массива в два столбика и n-ое колличество строк - C (СИ)
Формулировка задачи:
никто не может нормально объяснить
! Сколько уже всего пересмотрел не понимаю - уже начинается паника. Мне нужно следующее: - если приходит символ, то запустить блок создания массива в два столбика и n-ое колличество строк (пришёл 5-ый символ, значит нужно в массив добавть пятую строчку) (пришёл 6-ой символ, значит к тому массиву из 5ти строк, добавить шестую!) я пытаюсь уже (4ый день) реализовать эту фигню и не могу, и никто видимо не может! скоро повешусь к чертям... как я понял алгоритм должен быть такой:Решение задачи: «Если приходит символ, то запустить блок создания массива в два столбика и n-ое колличество строк»
#include <stdio.h>
#include <stdlib.h>
typedef struct MyNode
{
int index;
char letter;
struct MyNode *next;
} Node;
int main(void)
{
Node *head, *tail, *newptr;
char c;
head = tail = newptr = NULL;
while(c = getchar())
{
newptr = (Node*)malloc(sizeof(Node));
newptr->letter = c;
newptr->index = 1;
newptr->next = NULL;
if (head)
{
tail->next = newptr;
tail = tail->next;
}
else
head = tail = newptr;
}
return 0;
}
Объяснение кода листинга программы
В данном коде создается двумерный массив (коллекция) структур данных типа MyNode. Для этого используется динамическое выделение памяти с помощью функции malloc. Каждый элемент массива (структура MyNode) содержит в себе индекс, букву и указатель на следующий элемент. Пользователю предлагается ввести символы, которые будут добавлены в этот массив. При каждом введенном символе создается новый элемент массива и добавляется в конец списка. При этом индекс каждого нового элемента устанавливается равным 1. Когда пользователь вводит символ, создается новый элемент массива, который добавляется в конец списка. При этом указатель tail указывает на последний элемент списка, а указатель head указывает на первый элемент списка. Когда пользователь прекращает ввод символов, список считается полным. Для корректного завершения работы программы необходимо выполнить обязательные действия:
- Освободить память, выделенную под каждый элемент массива.
- Указатель head указывает на первый элемент массива, а указатель tail указывает на последний элемент массива.
- Пройти по всем элементам массива с помощью цикла и вывести на экран значения индекса и буквы каждого элемента.