Есть код на c++, надо преобразовать в с - C (СИ)

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

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

Код нашёл на вашем же сайте, с с++ не знаком ещё(1ый курс) (у меня по условию должен быть линейный список ещё)

#include <iostream>
 
using namespace std;
struct Node 
{
    int data;
    Node *next;
    Node *prev;
};
 
int main()
{
    Node *start;            // указатель на начало списка
    int kol;                // количество элементов в списке
    Node *spis = new Node;    //  создание списка
 
    cout << "Enter number of elements: ";
    cin >> kol;
    cout << "Element 1: ";
    cin >> spis->data;      // инициализация 1-го элемента данными
    spis->next = NULL;        // т.к. конец списка.
 
    start = spis;               //  копирование в start указателя на начало списка
    spis->prev = spis;
    start->prev = start;
 
    for (int i=1; i<kol; i++)   // добавление элементов
    {       spis->next = new Node;  // выделение памяти под новый элемент
            cout << "Element " << i+1 << " : ";
            cin >> spis->next->data;           // ввод данных
            spis->next->next = NULL;           // следующий - NULL
            spis->next->prev = spis;
            spis = spis->next;              }   // новый элемент становится текущим
    
    // вывод списка
    cout << "-------------\n";
    spis = start;
    while(spis != NULL)
    {        cout << endl << spis->data;
             spis = spis->next;             } 
    //------------------
 
    spis = start;
    int max = spis->data;
    while(spis != NULL)
    {       if (spis->data > max)
            max = spis->data;
            spis = spis->next;              }
    cout << "\n   Max:  " << max << endl;
    
    //------------------
    
   spis = start;
 
    while(spis){
        if(spis->data==max){
            Node *temp=spis;
            if(spis==start){
                spis=start=spis->next;
                spis->prev=NULL;
            }else{
                spis->prev->next=spis->next;
                if(spis->next)
                    spis->next->prev=spis->prev;
                spis=spis->next;
            }
            delete temp;
        }else{
            spis=spis->next;
        }
    }
    
    // вывод измененного (равные максимальному удалены) списка
    cout << "\n-------------\n";
    spis = start;
    //i = 1;
    while(spis != NULL)
    {
        cout << endl << spis->data;
        spis = spis->next;
    } 
    //------------------
    
    int L; cin >> L; 
 
return 0;
}

Решение задачи: «Есть код на c++, надо преобразовать в с»

textual
Листинг программы
Node *prev;

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

В данном коде создается указатель на предыдущий узел в связном списке.

  1. Объявляется переменная prev типа Node* (указатель на узел).
  2. Значение переменной prev инициализируется как NULL (указатель на пустой блок памяти), что означает, что первый узел списка еще не создан.

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


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

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

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