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

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

Войти
Регистрация
Восстановить пароль
 
Artur_L
Сообщений: n/a
#1

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

12.05.2013, 21:50. Просмотров 514. Ответов 2
Метки нет (Все метки)

Сформировать однонаправленный список элементов типа char и написать программу следующих операций над ним: а) удвоить каждый элемент списка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2013, 21:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Однонаправленный список элементов (удвоить каждый элемент списка) (C++):

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

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

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

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

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

Однонаправленный список. Операции: удалить элемент из заданной позиции, добавить элемент в заданную позицию,проверка на неравенство - C++
Помогите. Есть одна написанная. Условия: Очередь. Операции: “+” добавить элемент ; “-“ удалить элемент ; bool() проверка «Пуста...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 22:40 #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
#include <iostream>
 
struct Onode
{
    char ch;
    Onode* next;
};
 
class SNode
{
    public:
        SNode()
        {
            pt_main = 0;
        }
 
        SNode(const char ch)
        {
            pt_main = 0;
            Onode* tmp = new Onode;
            tmp->ch = ch;
            tmp->next = pt_main;
            pt_main = tmp;
        }
 
        ~SNode();
 
        Onode* push_front(const char);
        void show();
        Onode* double_length();
 
        friend struct Onode;
 
    private:
        SNode(const SNode&);
        SNode& operator=(const SNode&);
        
        Onode* pt_main;
};
 
SNode::~SNode()
{
    if (pt_main) 
    {
        Onode* tmp = pt_main;
        while (tmp)
        {
            pt_main = pt_main->next;
            delete tmp; 
            tmp = pt_main;
        }
        pt_main = 0;
    }
}
 
Onode* SNode::push_front(const char ch)
{
    Onode* node = new Onode;
    node->ch = ch;
    node->next = pt_main;
    pt_main = node;
    return node;
}
 
void SNode::show()
{
    Onode* tmp = pt_main;
    unsigned cn = 0;
 
    while (tmp)
    {
        std::cout << ++cn << ": " << tmp->ch << std::endl;
        tmp = tmp->next;
    }
}
 
Onode* SNode::double_length()
{
    Onode* tmp = pt_main;
    char ch;
 
    while (tmp)
    {
        ch = tmp->ch;
        this->push_front(ch);
        tmp = tmp->next;
    }
    return pt_main;
}
 
int main()
{
    SNode obj('H');
    obj.push_front('e');
    obj.push_front('l');
    obj.push_front('l');
    obj.push_front('o');
    obj.push_front('!');
 
    obj.double_length();
 
    obj.show();
 
    return 0;
}
1
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.05.2013, 22:49 #3
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 22:49
Привет! Вот еще темы с ответами:

Кольцевой однонаправленный список, вывод списка на экран - C++
Ввод и вывод списка. Ввод вроде работает, а вывод списка не работает, выводится ошибка в этой строке: cout &lt;&lt; pv-&gt; data &lt;&lt; &quot; &quot;; ...

Организовать ввод в однонаправленный список; подсчитать сумму чисел списка - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо подсчитать сумму чисел...

Однонаправленный связный список с полями данных в самом узле списка - C++
Добрый день! Правильно я поняла, что однонаправленный связный список с полями данных в самом узле списка выглядит так: struct robot //...

однонаправленный список: элементы добавляются и удаляются с начала, просматриваются с конца списка - C++
Вот друзья задание: Реализовать алгоритм работы с динамической структурой данных – однонаправленный список: элементы добавляются и...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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