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

однонаправленные связные списки - C++

Восстановить пароль Регистрация
 
fits
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
30.09.2013, 19:45     однонаправленные связные списки #1
сформировать однонаправленный список содержащий последовательность символов s1 , s2 , . . . , sn ( n >= 2 и заранее
неизвестно). Получить последовательность символов, содержащую только последние вхождения каждого символа в строку с сохранением их исходного взаимного порядка.
заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 19:45     однонаправленные связные списки
Посмотрите здесь:

Связные списки C++
C++ Однонаправленные списки
Связные списки C++
C++ Еще раз однонаправленные списки
однонаправленные списки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
30.09.2013, 19:46     однонаправленные связные списки #2
что не получается?
fits
3 / 3 / 1
Регистрация: 08.12.2012
Сообщений: 47
06.10.2013, 21:56  [ТС]     однонаправленные связные списки #3
сформировать и заполнить список
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
07.10.2013, 02:35     однонаправленные связные списки #4
Цитата Сообщение от fits Посмотреть сообщение
сформировать однонаправленный список содержащий последовательность символов s1 , s2 , . . . , sn ( n >= 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
#include <string>
#include <iterator>
#include <forward_list>
#include <iostream>
 
using namespace std;
 
template <typename T>
void last_unique(forward_list<T> & list) {
    for (auto iter = begin(list); iter != end(list); ++iter) {
        auto prev = list.before_begin();
        auto cur = begin(list);
        while (cur != iter) {
            if (*cur == *iter) {
                ++cur;
                list.erase_after(prev);
            } else {
                prev = cur++;
            }
        }
    }
}
 
int main() {
    string str("abcdefbcabad");
    forward_list<char> list(begin(str), end(str));
    last_unique(list);
    copy(begin(list), end(list), ostream_iterator<char>(cout, ""));
}
efcbad
Yandex
Объявления
07.10.2013, 02:35     однонаправленные связные списки
Ответ Создать тему
Опции темы

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