Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
GFF
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
1

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

08.04.2013, 22:28. Просмотров 861. Ответов 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
Ответы с готовыми решениями:

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

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

Удалить все символы из списка содержащего подсписки
По идее нужно как-то пересобрать список по условиям. нужно ли переводить этот список в строку,...

Рекурсия: удалить из многоуровневого списка все подсписки, содержащие хотя бы один ноль
дан многоуровневый список x, удалить из него все подсписки содержащие хотя бы один ноль

Получить неупорядоченные тройки элементов списка
В прологе вообще не шарю, могу тока запустить( задачку дали есть список получить...

4
VEINHORN
543 / 92 / 49
Регистрация: 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 / 49
Регистрация: 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

Разделение списка на подсписки: в первый n элементов с начала списка, во второй оставшиеся
Определите функцию, осуществляющую разделение исходного списка на два подсписка. В первый из них...

Объединить подсписки списка
Объединить подсписки списка при условии, что у каждого из подсписков есть хотя бы один взаимно...

Разбиение списка на подсписки
Приветствую! Подскажите, пожалуйста, как на Haskell красиво решить вот такую задачу: Имеется...


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

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

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