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

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

08.04.2013, 22:28. Просмотров 1075. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2013, 22:28
Ответы с готовыми решениями:

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

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

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

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

4
544 / 93 / 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
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
10.04.2013, 00:11  [ТС] 3
MCKLAS, спасибо огромное!! Все правильно работает!!

Добавлено через 6 часов 14 минут
А можно именно удалить элемент, а не просто не выводить его на экран?
0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
15.04.2013, 21:45 4
GFF, это несложно просто указатели перезаписывать надо в переменные.
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 4
28.04.2013, 19:09  [ТС] 5
MCKLAS, у меня никак не получается с удалением элементов. Могли бы Вы написать еще и этот момент?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 19:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

Разбиение списка на всевозможные подсписки
Помоните пожайлуста решить задачу: Построить все возможные подсписки заданного списка. Искал по...


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

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

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