@uzi_no_uzi

Как работает данная функция?

Имеется такой код, по которому возникли вопросы

#include <iostream>
#include <fstream>
using namespace std;

void insert(list*& p, char value); 
 
struct list
{
	char symbol;
	list* next;
};

int main()
{
	setlocale(LC_CTYPE, "Russian");
	list* first = nullptr;

	char value;
	cout << "Введите символ ";
	cin >> value;
	insert(first, value);
}

void insert(list*& p, char value) // 
{
	list* newP = new list;
	if (newP != NULL)     //есть ли место?  
	{
		newP->symbol = value;
		newP->next = p;
		p = newP;
	}
	else
		cout << "Операция добавления не выполнена" << endl;
}


1. Функция insert принимает два параметра, для чего первый параметр? Зачем передавать в функцию insert указатель на ссылку первым параметром?
2. list* first = nullptr - Похоже в этой строке создается указатель на первый элемент односвязного списка, зачем в него присваивать пустоту?
3. Что происходит в этой строке? list* newP = new list;
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вопросы следует задать разработчику этого кода, ибо общий ответ на все 3 пункта – потому что так написан код. Предпосылки неизвестны.
  1. В первом параметре передается ссылка на указатель "головы списка", функция insert создает новый элемент списка и вставляет его в начало, поэтому ей необходимо менять значение указатели на голову
  2. "C++ неявно преобразует nullptr в соответствующий тип указателя". Пустота присваивается потому что он пустой, а переменные следует инициализировать
  3. Создается новый элемент списка
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы