
ЯЗЫК СИ. Написать программу заполнения односвязного списка значениями и вывода этих значений.
Помогите, пожалуйста.

Ответы на вопрос

#include <stdio.h>
#include <stdlib.h>
struct LIST {
int number;
struct LIST *next; };
//-----------------------------------------------------------------------------
void Push(struct LIST** list, int number) {
struct LIST* node = malloc(sizeof(struct LIST));
node->number = number;
node->next = *list;
*list = node; }
//-----------------------------------------------------------------------------
void Print(const struct LIST* list) {
if (list) {
Print(list->next);
printf("%d ", list->number); } }
//-----------------------------------------------------------------------------
int main() {
int i = 10;
struct LIST* list = NULL;
while (i--) {
Push(&list, i + 1); }
//---(это разделение разных программ)



Конечно, я помогу вам написать программу на языке C для заполнения односвязного списка значениями и вывода этих значений. Вот пример программы:
```c
#include
// Структура для представления узла односвязного списка struct Node { int data; struct Node* next; };
// Функция для добавления нового узла в список void append(struct Node** head_ref, int new_data) { // Выделение памяти для нового узла struct Node* new_node = (struct Node*)malloc(sizeof(struct Node)); // Заполнение данных нового узла new_node->data = new_data; // Установка указателя на следующий узел в NULL, так как новый узел будет последним new_node->next = NULL; // Если список пуст, то новый узел становится головным узлом if (*head_ref == NULL) { *head_ref = new_node; return; } // В противном случае, находим последний узел и устанавливаем указатель на следующий узел нового узла struct Node* last = *head_ref; while (last->next != NULL) { last = last->next; } last->next = new_node; }
// Функция для вывода значений списка void printList(struct Node* node) { while (node != NULL) { printf("%d ", node->data); node = node->next; } }
// Основная функция int main() { struct Node* head = NULL; // Добавление значений в список append(&head, 1); append(&head, 2); append(&head, 3); append(&head, 4); append(&head, 5); // Вывод значений списка printf("Список значений: "); printList(head); return 0; } ```
Программа начинается с определения структуры `Node`, которая представляет узел односвязного списка. Узел содержит данные (в данном случае целочисленные значения) и указатель на следующий узел.
Затем определены функции `append` и `printList`. Функция `append` добавляет новый узел со значением `new_data` в конец списка. Функция `printList` выводит значения списка, перебирая узлы с помощью указателей на следующие узлы.
В функции `main` создается головной узел списка `head` и добавляются значения 1, 2, 3, 4, 5 с помощью функции `append`. Затем вызывается функция `printList`, чтобы вывести значения списка на экран.
Результат выполнения программы будет следующим:
``` Список значений: 1 2 3 4 5 ```
Надеюсь, это поможет вам! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.



Конечно, я могу помочь вам написать программу на языке программирования C для создания и вывода односвязного списка. Ниже приведен пример простой программы на C, которая выполняет указанные задачи:
```c
#include
// Определение структуры для узла списка struct Node { int data; struct Node* next; };
// Функция для добавления нового узла в конец списка void append(struct Node** head, int value) { // Создаем новый узел struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); if (newNode == NULL) { printf("Ошибка выделения памяти\n"); exit(EXIT_FAILURE); }
// Заполняем данные и устанавливаем указатель на следующий узел как NULL newNode->data = value; newNode->next = NULL;
// Если список пуст, делаем новый узел головным узлом списка if (*head == NULL) { *head = newNode; } else { // Иначе находим последний узел и добавляем новый узел struct Node* last = *head; while (last->next != NULL) { last = last->next; } last->next = newNode; } }
// Функция для вывода значений списка void display(struct Node* head) { struct Node* current = head;
// Проходим по списку и выводим значения while (current != NULL) { printf("%d -> ", current->data); current = current->next; }
printf("NULL\n"); }
// Функция освобождения памяти, выделенной для списка void freeList(struct Node* head) { struct Node* current = head; struct Node* next;
// Проходим по списку и освобождаем память для каждого узла while (current != NULL) { next = current->next; free(current); current = next; } }
int main() { // Инициализация головы списка struct Node* head = NULL;
// Заполняем список значениями append(&head, 1); append(&head, 2); append(&head, 3);
// Выводим значения списка printf("Список: "); display(head);
// Освобождаем память, выделенную для списка freeList(head);
return 0; } ```
Эта программа создает простой односвязный список с тремя узлами, содержащими значения 1, 2 и 3. Затем она выводит значения списка и освобождает память, выделенную для списка. Вы можете изменить и расширить этот код в соответствии с вашими потребностями.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili