Как мне сделать функцию для добавления элемент в заданую позицию односвязного списка?

150
07 апреля 2019, 21:50
#pragma once
#include <iostream>
using namespace std;

template <typename T>
class List // класс список
{
public:
    List(); // конструктор
    ~List(); // деструктор
    void push_back(T data); // вставить в конец списка 
    int GetSize() { return Size; } 
    T& operator[](const int index); 
    void add(Node<T> *head, int pos, int x);
    void print(Node *top);
private:
    template<typename T> 
    class Node // класс "Узел"
    {
    public:
        Node *pNext; // указатель на следующий элемент
        T data; // данные
        int x;
        Node(T data = T(), Node *pNext = nullptr) // по умолчанию пусто
        {
            this->data = data;
            this->pNext = pNext;
        }
    };
    Node<T> *head; // голова
    int Size;  // для хранения количества элементов 
};
template<typename T>
List<T>::List()
{
    Size = 0;
    head = nullptr;
}
template<typename T>
List<T>::~List()
{
}
template<typename T>
inline void List<T>::push_back(T data) 
{
    if (head == nullptr) // если голова пустая 
    {
        head = new Node<T>(data); // создаём голову 
    }
    else { // если нет
        Node<T> * current = this->head; // создаём времменая переменная с указателем на current и присваиваем ей значение заголовка
        while (current->pNext != nullptr) // поиск следующего элемента. Если сдедующий элемент не пуст 
        {
            current = current->pNext; // присваевания указателя на следующий елемент  
        }
        current->pNext = new Node<T>(data); // создаём следующий элмент 
    }
    Size++;
}
template<typename T>
inline T & List<T>::operator[](const int index) // перегрузка оператора []
{
    int counter = 0; // счётчик 
    Node<T> *current = this->head;
    while (current != nullptr) // если следующий элемент не пустой
    {
        if (counter == index) // проверка на совпадения 
        {
            return current->data; // возвращаем данные
        }
        current = current->pNext; // указатель на следующий элемент 
        counter++; // счётчик + 1
    }
}
Answer 1

Гуглиться за 1 минуту. В интеррнете куча информации на этот счет. http://www.intuit.ru/studies/professional_skill_improvements/2056/courses/504/lecture/11456?page=2

READ ALSO
c++: передача внешних параметров при поиске значений в векторе (при определённом операторе &lt;, &gt;)

c++: передача внешних параметров при поиске значений в векторе (при определённом операторе <, >)

Подскажите, как более правильнее и элегантнее решить следующую задачу:

202
буквенный поиск в vector

буквенный поиск в vector

При создании кнопки поиска компилятор выдает ошибку:

271
Помогите удалить строку [закрыт]

Помогите удалить строку [закрыт]

На просторах интернета нашёл такой код, но он почему-то не пашет:

149