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

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

Войти
Регистрация
Восстановить пароль
 
GFF
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
#1

Удалить из списка неупорядоченные подсписки - C++

08.04.2013, 22:28. Просмотров 691. Ответов 4
Метки нет (Все метки)

Доброго времени суток!
Из списка нужно удалить неупорядоченные подсписки. К примеру, если была последовательность 6 8 2 11 4 9 20 55
должно остаться: 6 8 11 20 55
Помогите пожалуйста реализовать функцию удаления этих элементов. Заранее спасибо!
Мой код:

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
#include "iostream"
#include <time.h>
 
using namespace std;
 
struct node
{
    int value;
    node* next;
    node()
    {
        next = NULL;
    }
};
 
void print(node*, int val)
{
    node* head;
    head = new node;
    head -> value = 11;
    node* tmp;
    node* tmp1;
    tmp = head;
 
    for(int i=0; i < val; i++)
    {
        tmp1 = new node;
        tmp1 -> value = rand()%100;
        tmp -> next = tmp1;
        tmp1 -> next = NULL;
        tmp = tmp1;
    }
 
    cout<<"Список:"<<endl;
 
    for(tmp1 = head; tmp1 != NULL; tmp1 = tmp1 -> next)
    {
        cout << tmp1 -> value <<" ";
    }
    cout << endl;
    cout << endl;
 
    for (int i = 0; i < val; i++)
    {
        if(head->value > head->next->value)
        {
            cout<<head->next->value<<endl;
            //удалить неупорядоченные подсписки, т.е. элементы, которые меньше предыдущего. 
            //в итоге должен быть упорядоченный список
        }
        head = head->next;
    }
}
 
 
int main ()
{
    setlocale(LC_ALL,"");
    int value;
    cout << "Количество элементов в списке:" << endl;
    cin >> value;
    node* head;
    head = new node;
    head -> value = 11;
    print(head, value);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 22:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из списка неупорядоченные подсписки (C++):

Проверить, совпадают ли подсписки двусвязного списка - C++
Проверить, совпадают ли подсписки двусвязного списка

Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка. - C++
Здравствуйте. Не получается решить задачу. Условие. Дан непустой двусвязный список. Удалить из списка все элементы с нечётными ...

Составить программу, которая превращает неупорядоченные массивы В [16] и С [20] следующим образом - C++
Составить программу, которая превращает неупорядоченные массивы В и С следующим образом: меняет значения элементов с максимальным...

Составить программу, которая превращает неупорядоченные массивы В [16] и С [20] по заданному алгоритму. - C++
НЕ могу никак написать код программы вот этой задачи: 1. Составить программу, которая превращает неупорядоченные массивы В и С ...

Удалить элемент из списка - C++
Есть список. Надо удалить тот елемент который размещен за заданым. Я пробовал чтото написать(55 строка) но оно не удаляет.#include...

Удалить элемент из списка - C++
Нужно удалить елемент из списка. Вот написал такую ф-ю. Но она почему то вылетает. Буду очень благодарен если поможете)) void...

4
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
09.04.2013, 17:35 #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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "iostream"
#include <time.h>
using namespace std;
struct node
{
    int value;
    node* next;
    node()
    {
        next = NULL;
    }
};
 
void print(node*, int val)
{
    node* head;
    head = new node;
    head -> value = 11;
    node* tmp;
    node* tmp1;
    tmp = head;
    for(int i=0; i < val; i++)
    {
        tmp1 = new node;
        tmp1 -> value = rand()%100;
        tmp -> next = tmp1;
        tmp1 -> next = NULL;
        tmp = tmp1;
    }
    cout<<"Список:"<<endl;
    for(tmp1 = head; tmp1 != NULL; tmp1 = tmp1 -> next)
    {
        cout << tmp1 -> value <<" ";
    }
    cout << endl;
    cout << endl;
    ///////////////////////this function
    node* tmp2;
    int i;
    node* tmp3;
    for(tmp3 = head,i = 0; tmp3 != NULL; tmp3 = tmp3 -> next,i++)
    {
        if(i == 0)
            cout << tmp3->value << " ";
        else
        {
            int pos = i;
            int tmp = tmp3->value;
            node* tmp4;
            int j,k = 0;
            for(tmp4 = head,j = 0; tmp4 != NULL,j < i; tmp4 = tmp4 -> next,j++)
            {
                if(tmp > tmp4->value)
                    k++;
            }
            if(k == i)
                cout << tmp << " ";
        }
    }
    cout << endl;
    ///////////////////////this function
}
int main ()
{
    setlocale(LC_ALL,"");
    int value;
    cout << "Количество элементов в списке:" << endl;
    cin >> value;
    node* head;
    head = new node;
    head -> value = 11;
    print(head, value);
    system("pause");
    return 0;
}
Если я правильно понял то получается так.
1
GFF
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
10.04.2013, 00:11  [ТС] #3
MCKLAS, спасибо огромное!! Все правильно работает!!

Добавлено через 6 часов 14 минут
А можно именно удалить элемент, а не просто не выводить его на экран?
0
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
15.04.2013, 21:45 #4
GFF, это несложно просто указатели перезаписывать надо в переменные.
0
GFF
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
28.04.2013, 19:09  [ТС] #5
MCKLAS, у меня никак не получается с удалением элементов. Могли бы Вы написать еще и этот момент?
0
28.04.2013, 19:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 19:09
Привет! Вот еще темы с ответами:

Удалить повторяющиеся символы из списка - C++
Удалить повторяющиеся символы из списка.с помощью двусвязного списка

Удалить из списка элементы меньшие 10 - C++
Удалить из списка элементы меньшие 10 Добавлено через 19 минут нужно в этой задаче создать список и чтобы в нем удалились элементы...

Удалить элемент из односвязного списка - C++
У нас есть односвязный список и указатель на один из его элементов, как удалить этот элемент из списка, оставив список целостным ?(сделать...

Удалить первый элемент списка - C++
Подскажите пожалуйста!!! Как сделать так чтобы в этой программе происходило удаление элемента первого в списке??? В этой программе...


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

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

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