Есть код на 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;
Объяснение кода листинга программы
В данном коде создается указатель на предыдущий узел в связном списке.
- Объявляется переменная
prevтипаNode*(указатель на узел). - Значение переменной
prevинициализируется какNULL(указатель на пустой блок памяти), что означает, что первый узел списка еще не создан.