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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Demannfs
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 4
#1

Построить класс для работы с односвязным списком - C++

02.05.2011, 22:19. Просмотров 1696. Ответов 5
Метки нет (Все метки)

Построить класс для работы с односвязным списком. Элементы списка – слова. Создать список, содержащий некоторую последовательность слов. Заменить в списке каждое вхождение заданного слова другим (также заданным).
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2011, 22:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построить класс для работы с односвязным списком (C++):

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

Построить класс для работы с односвязным списком - C++
При решении задач необходимо, без использования STL, описать класс, который используется для представления элементов а) массива с...

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком. Элементы списка – действительные числа. Создать два упорядоченных по возрастанию списка,...

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

Построить класс для работы с односвязным списком - C++
Построить класс для работы с односвязным списком.Элементы списка действительные числа.Создать два упорядочных по возрастанию списка,слить...

Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в списке List2 в у - C++
Построить класс для работы с односвязным списком. Создать два списка: List1 и List2. Проверить, содержатся ли элементы списка List1 в...

5
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 02:03 #2
Цитата Сообщение от Demannfs Посмотреть сообщение
Построить класс для работы с односвязным списком. Элементы списка – слова. Создать список, содержащий некоторую последовательность слов. Заменить в списке каждое вхождение заданного слова другим (также заданным).
В классе - конструктор создает пустой список, деструктор - удаляет список.
Методы:
добавить в начало
удалить первый
поиск заданного слова
замена слова
Поля - указатель на голову списка.
Элемент списка - структура с двумя полями:
слово, тип строка
следующий, тип указатель на элемент списка-стркутру

Что из этого ты не можешь написать?
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
03.05.2011, 03:32 #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
#include <iostream>
#include <cstring>
using namespace std;
 
struct ListItem
{
    std::string data;       // Хранимые в элементе списка данные
    ListItem *prev, *next;  // Указатели на предыдущий и следующий элементы
 
    // Конструктор
    ListItem(const std::string data):prev(NULL),next(NULL)
    {
        this->data = data;
    }
 
    ListItem* getTail()
    {
        ListItem* item = this;
        while(item->next)
            item = item->next;
        return item;
    }
 
    ListItem* addToTail(const std::string data)
    {
        ListItem *item = new ListItem(data), *last = getTail();
        item->prev = last;
        last->next = item;
        return item;
    }
 
    ListItem* findLastItem(const std::string data)
    {
        ListItem* item = this, *last = NULL;
        while(item->next)
        {
            if(item->data == data)
            {
                last = item;
            }
            item = item->next;
        }
        return last;
 
    }
    bool insertAfterLastItem(const std::string data, ListItem* list)
    {
        ListItem* last = findLastItem(data), *next_item, *prev_item, *list_last;
        if(!last) return false;
        next_item = last->next;
        list_last = list->getTail();
        list_last->next = next_item;
        if(next_item)
            next_item->prev = list_last;
        list->prev = last;
        last->next = list;
        return true;
    }
 
    ~ListItem()
    {
        if(next) delete next;
    }
};
 
void print_list(ListItem* list)
{
    ListItem* item = list;
    while(item)
    {
        std::cout << item->data;
        item = item->next;
        if(item) std::cout << " ";
    }
    std::cout << std::endl;
};
 
void assigned(ListItem* list)
{
    ListItem* item=list;
    while (item)
    {
        item->data.assign(&item->data[1]);
        item=item->next;
    }
};
 
void plus_invert (ListItem* list)
{
    ListItem *item=list->getTail();
    while (item)
    {
        list->addToTail(item->data);
        item = item->prev;
    }
};
 
 
 
 
int main()
{
    ListItem *a = new ListItem("aa1");
    a->addToTail("aa2");
    a->addToTail("aa3");
    a->addToTail("aa4");
    std::cout << "List a: ";
    print_list(a);
 
 
    ListItem *b = new ListItem("bb1");
    b->addToTail("bb2");
    b->addToTail("bb3");
    b->addToTail("bb4");
    std::cout << "List b: ";
    print_list(b);
 
    a->insertAfterLastItem("aa3", b);
    std::cout << "Merged: ";
    print_list(a);
    assigned(a);
    cout<<"After deleting first symbol: ";
    print_list(a);
    plus_invert(a);
    cout<<"After inverting (and append): ";
    print_list(a);
 
    delete a;
 
    return 0;
}
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
03.05.2011, 07:59 #4
Gepar, Страааанный деструктор
1
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 09:47 #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Gepar, Страааанный деструктор
Похоже, здесь автор просто не различает "элемент списка" и "список"...
0
Demannfs
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 4
03.05.2011, 12:35  [ТС] #6
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.[/QUOTE]

Спасибо и на том , с прогай я уже разберусь!
0
03.05.2011, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 12:35
Привет! Вот еще темы с ответами:

Построить класс для работы со списком - C++
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и...

Разработать класс с набором функций для управления односвязным списком - C++
Добрый день, форумчане! Обращаюсь к вам с просьбой, с чего начать мне выполнение данного задания, какие элементы использовать. Или хотя...

Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет - C++
Построить класс для работы со списком. Элемент списка содержит информацию о заявке на авиабилет: пункт назначения, номер рейса, фамилию и...

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком - C++
Решить задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком. Тип элементов задается как параметр...


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

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

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