Сформировать двунаправленный связанный список (стек), содержащий последовательность целых чисел - C (СИ)
Формулировка задачи:
Сформировать двунаправленный связанный список (стек), содержащий последовательность целых чисел, вводимых из файла. Даны и два целых числа X1 и X2. Вставить число 2000 после каждого элемента, большего, чем X1 и меньшего чем X2.
Язык С
Спасибо!
Решение задачи: «Сформировать двунаправленный связанный список (стек), содержащий последовательность целых чисел»
textual
Листинг программы
#include <iostream> using namespace std; template <class T> class stack_t { struct node_t { T m_data; node_t * m_prev; node_t * m_next; node_t( int data ) : m_data( data ) {} }; node_t * m_head; node_t * m_tail; public: stack_t() : m_head(0), m_tail(0) {} void push_back( T data ) { node_t * p_node = new node_t( data ); if ( !m_head ) { m_head = m_tail = p_node; p_node->m_prev = 0; } else { m_tail->m_next = p_node; p_node->m_prev = m_tail; m_tail = p_node; } p_node->m_next = 0; } T pop_back() { T value = m_tail->m_data; if ( m_tail->m_prev ) m_tail = m_tail->m_prev; if ( m_tail->m_next ) { delete m_tail->m_next; m_tail->m_next = 0; } return value; } }; int main() { stack_t <int> my_stack; for ( int i = 0; i < 10; i++ ) { my_stack.push_back( i ); } for ( int i = 0; i < 10; i++ ) { cout << my_stack.pop_back() << endl; } return 0; }
Объяснение кода листинга программы
В этом коде создается шаблонный класс stack_t для работы с двунаправленным связанным списком (стеком). Узел списка (node_t) содержит данные (m_data), указатель на предыдущий элемент (m_prev) и указатель на следующий элемент (m_next). В конструкторе класса инициализируются указатели head и tail, которые обозначают начало и конец списка. Метод push_back добавляет новый узел в конец списка, а метод pop_back удаляет и возвращает последний элемент списка. В функции main создается экземпляр класса stack_t для целых чисел (int), затем в цикле добавляются 10 элементов в стек, а затем в другом цикле удаляются и выводятся на экран эти же 10 элементов в обратном порядке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д