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

Атд список. Удалить одинаковые элементы. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
28.09.2011, 21:36     Атд список. Удалить одинаковые элементы. #1
Здравствуйте!!!!!

Вот еще одна проблемка, расчитываю на Вашу помощь!


Суть такова!

Есть АТД список, в нем нужно оставить только те элементы которые входят в него один раз!

Пример.

Допустим есть такой список a b v v b d b , должно получиться a d. Как видите остались только те символы которые входят в него один раз. Были удалены символы "b" так как он входит в список три раза и символ "v" потому что входит два раза.


Нужна ваша помощь!!

Спасибо!

Добавлено через 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
#include "iostream"
#include <list>
 
using std::list;
using std::cout;
using std::cin;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");//руский щрифт в консоле
    int n;
    char num;
    
    list<char> l; //объявили список
 
    cout << "Введите длину списка: ";
    cin >> n;
    cout << '\n';
 
    cout << "Введите содержимое списка: ";
 
    for(int i = 0; i < n; i++) //заполняем список
    {   
        cin >> num;
        l.push_back(num);
    }
    cout << '\n';
    
    list<char>::iterator j;
    list<char>::iterator i;
    for(list<char>::iterator iter1 = l.begin(); iter1 != l.end(); iter1++)
    {
        if (iter1 == l.begin()) 
        {   
            ++iter1;
        }
        i = iter1;
        j = iter1;
                --j;
                ++i;
 
    if (*j == *i) 
    {
        l.erase(iter1); // удалеем элемент
    }
    }
    // выводим список
    cout << "Семетричный список: ";
    for(list<char>::iterator iter1 = l.begin(); iter1 != l.end(); iter1++)
    {
        cout << *iter1 << " ";
    }
    cout << "\n";
 
    system("pause >> NULL");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2011, 21:36     Атд список. Удалить одинаковые элементы.
Посмотрите здесь:

C++ АТД-однонаправленный список
АТД список. Сравнение элементов C++
АТД список. Переставить местами элементы списка C++
C++ Удалить одинаковые элементы массива
C++ Как удалить одинаковые элементы из списка?
C++ Удалить из массива все одинаковые элементы, оставив их первые вхождения
Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их первые вхождения. C++
Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их последние вхождения C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
28.09.2011, 21:50     Атд список. Удалить одинаковые элементы. #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 <list>
#include <iostream>
#include <algorithm>
using namespace std;
 
int  main(void) {       
  list<char> lst;
  for(const char* s = "abvvbdb"; *s; lst.push_back( *s++ ));
 
  char ch;
  list<char>::iterator ptr;
  for(list<char>::iterator iter = lst.begin(); iter != lst.end(); *iter++) {
             if(count(lst.begin(), lst.end(), *iter) > 1) {
                   ch  = *iter;
                   while((ptr = find(lst.begin(), lst.end(), ch)) != lst.end()) 
                         lst.erase(ptr);
                   if(lst.size() > 0u)
                         iter = lst.begin();
                   else
                         break;
               }
  } 
 
  for(; ! lst.empty(); lst.pop_front())
      cout << lst.front();
  cout.put('\n');
  cin.get();
  return 0;
}
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
28.09.2011, 21:54  [ТС]     Атд список. Удалить одинаковые элементы. #3
xAtom, сума сойти! ))) спасибо!!
Yandex
Объявления
28.09.2011, 21:54     Атд список. Удалить одинаковые элементы.
Ответ Создать тему
Опции темы

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