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

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

Восстановить пароль Регистрация
 
Artur_L
Сообщений: n/a
12.05.2013, 21:50     Однонаправленный список элементов (удвоить каждый элемент списка) #1
Сформировать однонаправленный список элементов типа char и написать программу следующих операций над ним: а) удвоить каждый элемент списка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2013, 21:50     Однонаправленный список элементов (удвоить каждый элемент списка)
Посмотрите здесь:

Реализовать двухсвязный список. Каждый элемент списка может содержать один объект C++
C++ Линейно-однонаправленный список (удалить элемент списка по ключу)
C++ Кольцевой однонаправленный список, вывод списка на экран
C++ Однонаправленный список из квадратов отрицательных элементов первого списка
Однонаправленный связный список с полями данных в самом узле списка C++
C++ Добавить в список элемент после элемента с заданным инф.полем [Однонаправленный список]
C++ Организовать ввод в однонаправленный список; подсчитать сумму чисел списка
C++ Реализуйте однонаправленный список.Режим сортировки элементов списка без перестановки самих элементов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 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;
}
MrCold
851 / 749 / 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();
}
Yandex
Объявления
12.05.2013, 22:49     Однонаправленный список элементов (удвоить каждый элемент списка)
Ответ Создать тему
Опции темы

Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru