Вопрос задан 27.02.2019 в 23:13. Предмет Информатика. Спрашивает Цыганкова Анастасия.

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

Помогите, пожалуйста.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Гисар Ліза.
выбирай 

#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);     }  

//---(это разделение разных программ)
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я помогу вам написать программу на языке C для заполнения односвязного списка значениями и вывода этих значений. Вот пример программы:

```c #include #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 ```

Надеюсь, это поможет вам! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь вам написать программу на языке программирования C для создания и вывода односвязного списка. Ниже приведен пример простой программы на C, которая выполняет указанные задачи:

```c #include #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. Затем она выводит значения списка и освобождает память, выделенную для списка. Вы можете изменить и расширить этот код в соответствии с вашими потребностями.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос