Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
12.05.2013, 22:49 0

Однонаправленный список элементов (удвоить каждый элемент списка)

12.05.2013, 22:49. Просмотров 1102. Ответов 2
Метки (Все метки)

Ответ

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <conio.h>
 
template <class T>
struct Node
{
    Node<T>* Next;
    T Data;
    Node();
explicit Node(T &_Data);
};
template <class T>
Node<T>::Node()
        : Next(NULL)
{   
}
template <class T>
Node<T>::Node(T &_Data)
        :Data(_Data), Next(NULL)
{   
}
 
template <class T>
class LinkedList
{
public:
    LinkedList();
    ~LinkedList();
    void Clear();
    void Doubling();
    void AddFront(T &_Data);
    void AddEnd (T &_Data);
    void PrintList();
 
private:
    Node<T> *Head,  *Curr;
};
 
template <class T>
void LinkedList<T>::Doubling()
{
    if( Head == NULL)
    {
       return;
    }
    Curr = Head;
    while (Curr)
    {
       Node<T> *newNode = new Node<T>(Curr->Data);
       newNode->Next = Curr->Next;
       Curr->Next = newNode;
       Curr = newNode->Next;
    }
}
 
template <class T>
void LinkedList<T>::PrintList()
{
    Curr = Head;
    while (Curr)
    {
        std::cout << Curr->Data << ' ';//<< std::endl;
       Curr = Curr->Next;
    }
}
 
template <class T>
void LinkedList<T>::AddFront(T &_Data)
{
    Node<T> *newNode = new Node<T>(_Data);
    if( Head == NULL)
    {
       Head = newNode;
    }
    else
    {
       newNode->Next = Head;
       Head = newNode;
    }   
}
 
template <class T>
void LinkedList<T>::AddEnd(T &_Data)
{
    Node<T> *newNode = new Node<T>(_Data);
    if( Head == NULL)
    {
       Head = newNode;
    }
    else
    {
        Curr = Head;
        while(Curr )
        {
          Curr = Curr ->Next;
        }
       Curr ->Next = newNode;
    }
}
template <class T>
void LinkedList<T>::Clear()
{
    Node<T> *node = NULL;
    Curr = Head;
    while(Curr)
    {
        node = Curr->Next;
        delete Curr;
        Curr = node;
    }
    Head = NULL;
}
template <class T>
LinkedList<T>::LinkedList()
    :Head(NULL), Curr(NULL)
{
}
template <class T>
LinkedList<T>::~LinkedList()
{
    Clear();
}
 
int main()
{
        LinkedList<char> list;
        for (char i = 'A'; i < 'G'; i++)
        list.AddFront(i);
        std::cout << "\nList :\n";
        list.PrintList();
        list.Doubling();
        std::cout << "\n\nNew list :\n";
        list.PrintList();
        list.Clear();
    getch();
}


Вернуться к обсуждению:
Однонаправленный список элементов (удвоить каждый элемент списка)
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2013, 22:49
Готовые ответы и решения:

Линейно-однонаправленный список (удалить элемент списка по ключу)
Нужна помощь с методом удаление,должен удалить элемент списка по ключу,поиск приведён. #include...

Реализуйте однонаправленный список.Режим сортировки элементов списка без перестановки самих элементов
Реализуйте задание .В каждом из вариантов должно быть реализованы следующие режимы работы:...

Однонаправленный список из квадратов отрицательных элементов первого списка
Создать однонаправленный список действительных чисел, который может содержать как положительные так...

Реализовать двухсвязный список. Каждый элемент списка может содержать один объект
Здравствуйте, мне нужно было реализовать двухсвязный список. Каждый элемент списка может содержать...

Добавить в список элемент после элемента с заданным инф.полем [Однонаправленный список]
Вообщем есть: Функция создание списка Функции вывода на экран Функция добавление элемента с...

2
Другие темы раздела
C++ Каждое простое число последовательности увеличить в два раза, посчитать количество простых чисел в исходной последовательности http://www.cyberforum.ru/cpp-beginners/thread862926.html
Вводится последовательность из N целых чисел. Каждое простое число последовательности увеличить в два раза, посчитать количество простых чисел в исходной последовательности (функцией оформить...
C++ Как отправить структуру в функцию? Как отправить массив структур в функцию при использовании typedef? Вот на таком примере: #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define MAX 30 int i=1;... http://www.cyberforum.ru/cpp-beginners/thread862920.html
C++ Чтение из файла
Здравствуйте. Хочу, чтобы программа читала значения переменных из файла input.txt: Please choose the crystal lattice. Type 1 for BCC, 2 for FCC, and 3 for HCP: 2 Please enter lattice parameter...
Реферат: программная реализация задач обработки дат C++
"Программная реализация задач обработки дат"!!! замороченная тема , ни как не могу найти, кто поможет найти с меня огромный +!!!
C++ Строка символов. Все вхождения ‘abc’ заменить на ‘def’ http://www.cyberforum.ru/cpp-beginners/thread862900.html
Дана строка символов. Необходимо все вхождения ‘abc’ заменить на ‘def’
C++ деление по модулю 2 Здравствуйте такая задача есть массив g {111101} который заполнен таким образом и есть массив p {1111010000000} который заполнен вот так, нужно массив p поделить на g по модулю 2 и потом то что... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru