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

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

Войти
Регистрация
Восстановить пароль
 
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
#1

АТД список. Перемещение заданного элемента на первую позицию - C++

28.09.2011, 19:27. Просмотров 966. Ответов 4
Метки нет (Все метки)

Здравствуйте!!

Подскажите пожалуйста как переместить элемент списка на первую позицию?

Например:

есть список o o t o t, пользователь ввел символ "t" в итоге получился список t t o o o

Как видите все элементы, которые были равны "t" переместились на первые позиции в списке!!


Как можно это реализовать???

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

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента - C++
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...

Функция добавления элемента в односвязный список в указанную позицию - C++
Здравствуйте! Помогите пожалуйста написать функцию добавления элемента в односвязный список в указанную позицию.Не могу сообразить как...

В пользовательском классе List (список) реализовать вставку элемента после заданного элемента - C++
Помогите пожалуйста, мне надо сделать вставку элемента после найденного, а у меня элемент добавляется на место первого элемента. ...

Функция: вставка элемента в двусвязный список после заданного - C++
Всем доброго времени суток! Нужно написать функцию вставки элемента в двусвязный список после заданного. Список моего задания состоит из 4...

Вставка элемента в линейный односвязный список после заданного - C++
Я составила программу, но возникла проблема с реализацией вставки элемента после указанного значения. А точнее с составление функции,...

АТД-однонаправленный список - C++
доброй ночи =) .......я человек не смыслящий в этом атд классе, нуждаюсь в вашой помощи.......вот мне попалось такое задание ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
28.09.2011, 20:08 #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
#include <windows.h>
#include <iostream>
#include <list>
 
using std::cout;
using std::cin;
using std::list;
 
 
bool compare_ (char first, char second){
 if (first== 't')
  return true;
 return false; 
}
 
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
    
        setlocale(0, "");
 
        list<char> lst;
        
        int n;
 
        char num;
        char ch;
        
        cout << "Введите длину списка: ";
        cin >> n;
        cout << '\n';
 
        cout << "Введите элементы списка: ";
        for (int i = 0; i < n; i++)
        {
                cin >> num;
                lst.push_back(num);
        }
        cout << '\n';
 
        cout << "Введите символ который хотите переместить: ";
        cin >> ch;
        cout << '\n';
 
        //вот тут должно быть перемещение
        lst.sort(compare_);
         
        cout << "Исходных список: ";
        for (list<char>::iterator iter1 = lst.begin(); iter1 != lst.end(); iter1++)
        {
                cout << *iter1 << " ";
        }
        cout << '\n';
 
        system("pause >> NULL");
        return 0;
}
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
28.09.2011, 20:12 #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
#include <list>
#include <iostream>
using namespace std;
 
int  main(void) {   
    list<char>   lst;
    for(const char* s = "ATRIBUTE TANK AUDI-TT"; *s; lst.push_back(*s++));
    
    char ch = 'T';
    //cin >> ch;
 
    list<char>::iterator last, first, pos = lst.begin();
    if( *pos == ch )
         *pos++;
    for(list<char>::iterator iter = pos; iter != lst.end(); *iter++) {
          if(*iter == ch ) {
                  for(last = iter, first = --iter; 1; --last) {
                        swap(*last, *first);
                        if(first == pos)
                               break;
                         --first;
                   }
                   *pos++;
           }
      }
 
      for(; ! lst.empty(); lst.pop_front())
              cout << lst.front();
      cout.put('\n');
      cin.get();
      return 0;
}
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
28.09.2011, 20:23  [ТС] #4
Спасибо, большое! опять выручаете))))) спасибо!!

Добавлено через 1 минуту
kravam, твой вариант компилился, но выдавал ошибку, не выводил отсортированный список!!!

А вариант xAtom работает на Ура!! спасибо за старания!!
Петррр
5949 / 3386 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.09.2011, 21:06 #5
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
#include <iostream>
#include <list>
#include <algorithm>
 
using namespace std;
 
template<char ch>
bool move(char item)
{
    return item == ch;
}
 
int main()
{
    list<char> _list;
    _list.push_back('o');
    _list.push_back('t');
    _list.push_back('o');
    _list.push_back('o');
    _list.push_back('t');
    _list.push_back('o');
    _list.push_back('t');
    partition(_list.begin(), _list.end(), move<'t'>);
    copy(_list.begin(), _list.end(), ostream_iterator<char>(cout, " "));
    cout << endl;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2011, 21:06
Привет! Вот еще темы с ответами:

АТД список. Объединение списков. - C++
Здравствуйте! Подскажите пожалуйста как объединить два списка в один?? Или второй список добавить в конец первого? Вот так...

АТД список. Сравнение элементов - C++
Здравствуйте!! Тут возникла такая проблема! Подскажите пожалуйста каким образом можно сравнить элементы списка в цикле!!! В...

Атд список. Удалить одинаковые элементы. - C++
Здравствуйте!!!!! Вот еще одна проблемка, расчитываю на Вашу помощь! Суть такова! Есть АТД список, в нем нужно оставить...

АТД список. Замена элементов в списке - C++
Здравствуйте. Нужна ваша помощь! Подскажите пожалуйста как заменить элементы в списке которые стоят на четных позициях? Суть...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.09.2011, 21:06
Ответ Создать тему
Опции темы

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