Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
tiger()
3 / 3 / 0
Регистрация: 20.04.2011
Сообщений: 141
#1

Копирование односвязного списка - C++

01.05.2011, 10:14. Просмотров 2997. Ответов 2
Метки нет (Все метки)

в классе содержится односвязный список. соответственно пишу для него оператор присваивания.
подскажите, как можно скопировать односвязный список? я окончательно запутался в индексах и указателях... возможно, есть какой-то отработанный "красивый" алгоритм?

узел такой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct node
{
    double item;
    node* next;
 
    node(double x, node* y)
    {
        item=x;
        next=y;
    }
};
 
typedef node* link;
p.s. не прошу код, хотя бы общую суть
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2011, 10:14     Копирование односвязного списка
Посмотрите здесь:

Вывод односвязного списка на C - C++
помогите исправить ошибку!не выводит последний элемент списка. пишет: В экземпляре объекта не задана ссылка на объект. вот листинг...

Вывод односвязного списка - C++
Здравствуйте, помогите найти ошибку в функции. Выводит только первый элемент списка, даже если ты добавил больше.. Вводstruct List*...

Сортировка односвязного списка - C++
Добрый день форумчанам! Есть задача но не знаю как написать ее так как не знаю динамического программирования ) Будьте любезны...

Печать односвязного списка - C++
Доброго времени суток. Выполняя задание возникла трудность. Использую метод для этого, но почему-то вместо адекватного текста появляется...

Сортировка односвязного списка - C++
В условии задачи нужно считать из файла неопределенное количество студентов и занести их в односвязный список. Отсортировать по изучаемому...

Сортировка односвязного списка - C++
ребят, нужна помощь, учусь на втором курсе для зачета нужно написать сортировку односвязного списка. а мы такого рода программы не...

Создание односвязного списка - C++
Доброго времени суток. И так. Имеется задача. Создание односвязного списка и инициализация его с клавиатуры. Совсем запутался. ...

Вывод односвязного списка - C++
Выводи лишь последний элемент, в чёи ошибка? Подскажите пожалуйста #include "stdafx.h" #include <iostream> #include <fstream> ...

Шаблон односвязного списка - C++
Код: #include <iostream> #include <conio.h> using namespace std; template <typename T> class List { private: struct node...

Идеология односвязного списка - C++
Здарова! Посмотрел, что такое односвязный список и возникли естественно кое-какие чисто идеологические вопросы. Насколько я понял,...

Построение односвязного списка - C++
Имеется следующая функция считывающая структуру из файла и создающая односвязный список. Проблема в том, что если в файле > 1 э-та -...

Из односвязного списка в двусвязный - C++
Помогите, кусок переделать в двусвязный список. #include <iostream> using namespace std; struct Node { int data; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
01.05.2011, 10:31     Копирование односвязного списка #2
Общая суть такова, что тебе нужно пробежаться в цикле по исходному списку и для каждого элемента создать новую копию.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
01.05.2011, 11:13     Копирование односвязного списка #3
Создаёт новый список идентичный данному, вернёт указатель на первый узел нового списка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
node* my_copy(node* first){
    assert(first != NULL);
    node i_ptr = first;
    node cp_ptr = new node(i_ptr->item,i_ptr->next)
    
    node new_first = cp_ptr;
    
    while( i_ptr->next != NULL ){
    
        node cp_ptr->next = new node(i_ptr->next->item,i_ptr->next->next);
        
        i_ptr = i_ptr->next;
        cp_ptr = cp_ptr->next;
        
    }
    
    return new_first;
}
Считаем, что поле next последнего узла содержит NULL.
Yandex
Объявления
01.05.2011, 11:13     Копирование односвязного списка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru