Как вывести динамический список? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

как вывести динамический список?
void printWorkerList(Worker* List)
{
    
     while(List!=NULL)
     {
          printf("%s",List->dolshnost);
          printf("%s",List->nameofWorker);
          printf("%d",List->year);         
          List = List->next;         
                   }

     }
не работает вот сама программа

Решение задачи: «Как вывести динамический список?»

textual
Листинг программы
#include <iostream>
#include <stdio.h>
#include <locale.h>
#include <conio.h>
 
struct Worker
 
{
    char nameofWorker[30];
    char dolshnost[30];
    int year;
    struct Worker * next;
 
};
 
void printWorkerList(Worker* List) {
 
    while (List != NULL) {
        printf("%s", List->dolshnost);
        printf("%s", List->nameofWorker);
        printf("%d", List->year);
        List = List->next;
    }
 
}
int main(int* argc, char * argv[])
 
{
 
    setlocale(LC_CTYPE, "rus");
    int n;
    printf("количество рабочих");
    scanf("%d", &n);
    Worker * r = new Worker[n];
 
    for (int i = 0; i < n; i++) {
 
        printf("%i \n", i + 1);
        printf("введите имя рабочего ");
        scanf("%s", r->nameofWorker);
        printf("введите год принятия на работу ");
        scanf("%d", &r->year);
        printf("введите должность ");
        scanf("%s", r->dolshnost);
        for (int k = i; k < i; k++) {
            r = r->next;
        }
    }
    printWorkerList(r);
 
    int currentYear;
    printf("какова нужный год");
    scanf("%d", ¤tYear);
    for (int i = 0; i < n; i++) {
 
        if (r->year == currentYear) {
            printf("%s", r->nameofWorker);
            printf("%s", r->dolshnost);
            printf("%d", r->year);
            printf("\n");
        }
 
        r = r->next;
 
    }
 
    delete[] r;
    getch();
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: iostream, fstream, stdlib.h, string.h
  2. Объявляется структура Worker, которая содержит поля: имя рабочего, должность, год принятия на работу и указатель на следующий элемент списка.
  3. Создается функция printWorkerList, которая принимает указатель на первый элемент списка и выводит значения полей каждого элемента до тех пор, пока не будет равно NULL.
  4. В функции main создается локальная переменная n, в которую считывается количество рабочих.
  5. Создается массив Worker* r, который будет содержать указатели на элементы списка.
  6. В цикле от 0 до n-1 считываются значения полей для каждого рабочего и записываются в соответствующие поля в массиве r.
  7. После заполнения списка, вызывается функция printWorkerList с аргументом r.
  8. Затем пользователю предлагается ввести год, и в цикле от 0 до n-1 проверяется, совпадает ли год принятия на работу с введенным годом. Если да, то выводятся значения полей.
  9. После выхода из цикла, массив r освобождается с помощью оператора delete[].
  10. В конце программы вызывается функция getch() для приостановки выполнения программы до нажатия клавиши.
  11. Возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы