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

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

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

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

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

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

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

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

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

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

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

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

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

Что из этого ты не можешь написать?
Gepar
1175 / 531 / 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;
}
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.05.2011, 07:59     Построить класс для работы с односвязным списком #4
Gepar, Страааанный деструктор
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.05.2011, 09:47     Построить класс для работы с односвязным списком #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Gepar, Страааанный деструктор
Похоже, здесь автор просто не различает "элемент списка" и "список"...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 12:35     Построить класс для работы с односвязным списком
Еще ссылки по теме:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Demannfs
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 4
03.05.2011, 12:35  [ТС]     Построить класс для работы с односвязным списком #6
Комментариев нет но название функций не случайные, думаю разберёшься. Делает что тебе надо кроме замены нужного тебе элемента, для него думаю функцию уж прикрутишь.[/QUOTE]

Спасибо и на том , с прогай я уже разберусь!
Yandex
Объявления
03.05.2011, 12:35     Построить класс для работы с односвязным списком
Ответ Создать тему
Опции темы

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