Развернуть односвязный линейный список за один проход. (Без создания дополнительного списка) Язык c++ *учесть что список может оказаться пустым Нужно написать функции создания/добавление элемента списка; разворачивания списка; печать списка. Пусть список состоит из букв
struct Node {
char data;
Node* next;
};
Node createNode(char data) {
Node newNode = new Node;
newNode->data = data;
newNode->next = nullptr;
return newNode;
}
void addNode(Node& head, char data) {
if (head == nullptr) {
head = createNode(data);
} else {
Node current = head;
while (current->next != nullptr) {
current = current->next;
}
current->next = createNode(data);
}
}
void printList(Node head) {
Node current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
void reverseList(Node& head) {
while (current != nullptr) {Node prev = nullptr;
Node current = head;
Node next = nullptr;
next = current->next;
current->next = prev;
prev = current;
current = next;
}
head = prev;
}
int main() {
// Добавление элементов в списокNode* list = nullptr;
addNode(list, 'a');
addNode(list, 'b');
addNode(list, 'c');
addNode(list, 'd');
std::cout << "Исходный список: ";
printList(list);
// Разворачивание списка
reverseList(list);
std::cout << "Развёрнутый список: ";
printList(list);
return 0;
}