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

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

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

Оставить в списке только первые вхождения одинаковых элементов - C++

08.09.2011, 10:13. Просмотров 547. Ответов 3
Метки нет (Все метки)

В составе программы описать функцию, которая оставляет в списке только первые вхождения одинаковых элементов.

Добавлено через 10 минут
куку ))))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 10:13     Оставить в списке только первые вхождения одинаковых элементов
Посмотрите здесь:

Оставить в словах только первые вхождения каждой буквы - C++
Дана строка, содержащая последовательность слов, разделенных пробелами. Произвести со строкой следующие изменения:Оставить в словах только...

Оставить в слове только первые вхождения каждой буквы - C++
Задав с клавиатуры последовательность символов, реализовать обработку ее.Исходные данные задать самостоятельно. оставить в слове...

Оставить в словах только первые вхождения каждой буквы. - C++
Всем Hello! Помогите с решением друзья, буду очень благодарен))) Строки: 1) Оставить в словах только первые вхождения каждой буквы.

Оставить в числе только первые вхождения каждой цифры - C++
23) Дано длинное целое неотрицательное число, шестнадцатеричное представление которого не содержит ни одного нуля. Просматривая число,...

Оставить в строке только первые вхождения букв в словах классом string - C++
Здравствуйте, форумчане! Столкнулся с проблемой при изучении строк : Нужно оставить в строке только первые вхождения букв в словах с...

Оставить в слове первые вхождения каждой буквы - C++
Доброго время суток. Задача на языке C++. Дана последовательность слов. Напечатать все слова, предварительно преобразовав каждое из них...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
08.09.2011, 10:16     Оставить в списке только первые вхождения одинаковых элементов #2
Твои наработки?
Pips
0 / 0 / 0
Регистрация: 06.04.2011
Сообщений: 6
08.09.2011, 10:42  [ТС]     Оставить в списке только первые вхождения одинаковых элементов #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
#include <iostream>
using namespace std;
 
void main()
{   struct node {   int info;
        struct node *next;
       };
    typedef node *NodePtr;  // указатель на тип node
    NodePtr head = NULL;
    NodePtr p;          // указатель на текущий элемент
    NodePtr tail;           // указатель на "хвост" очереди
    int N = 10;         // количество элементов в очереди
    int cnt = 1;            // счетчик элементов в очереди
 
    if (head == NULL)
    {   head = new node;
    head->info = cnt++; // или какому-то другому значению
    head->next = NULL;
    tail = head;
    }
    for (int i = 2; i<=N; i++)
    { p = new node;
    p->info = cnt++;
    tail->next = p;     // в данном случае - NULL
    p->next = NULL;
    tail = p;
    }
// Вывод очереди на экран
p = head;
for (i = 1; i<=N; i++)
    {   cout << p->info << ' ';
    p = p->next;
    }
cout <<endl;}
 Комментарий модератора 
Используйте теги форматирования кода

вот эту лабу сделал а ту не могу смысла не понимаю (
в этой задание (Программа формирования очереди из 10 элементов и вывода ее на экран. )вроде они из одной темы ))
заранее спасибо

Добавлено через 7 минут
я новичок в этом деле слегка не понимаю можешь просто помоч пожалуйста

Добавлено через 3 минуты
а потом я исправлюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2011, 11:15     Оставить в списке только первые вхождения одинаковых элементов
Еще ссылки по теме:

В списке L из каждой группы подряд идущих элементов с равными значениями оставить только один - C++
В списке L из каждой группы подряд идущих элементов с равными значениями оставить только один.

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения - C++
Как мне удалять повторяющийся элемент? #include &lt;iostream&gt; using namespace std; int main () {float a; int n,k=0; cout&lt;&lt;&quot;n=&quot;;...

Удалить из массива повторяющиеся элементы, оставив только их первые вхождения - C++
Помогите, зачёт пишу

Удалить из строки все повторяющиеся буквы, оставив только их первые вхождения - C++
2.Даны строки, содержащие латинские буквы. Удалить из строки все повторяю* щиеся буквы, оставив только их первые вхождения.

Удалить из очереди все повторяющиеся слова, оставив только их первые вхождения - C++
Создать очередь, содержащую слова. Удалить из очереди все повторяющиеся слова, оставив только их первые вхождения. Например, если...

Одномерные массивы, удалить все повторяющиеся элементы, оставив только первые вхождения - C++
Задача на C++: из заданного массива удалить все повторяющиеся элементы, оставив только их первые вхождения. Вот моя программа, помогите...


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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
08.09.2011, 11:15     Оставить в списке только первые вхождения одинаковых элементов #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <stdio.h>
#include <stdlib.h>
 
#define FREE(PTR) free(PTR), (PTR) = NULL
 
struct node
{
    int data;
    struct node* next;
};
 
struct queue
{
    struct node* head;
    struct node* tail;
};
 
void create(struct queue*);
void delete(struct queue*);
void enqueue(struct queue*, int);
void unique(struct queue*);
int dequeue(struct queue*);
int empty(struct queue*);
void print(struct queue*);
 
int main(int argc, char* argv[])
{
    int i;
    int val;
 
    struct queue queue;
    
    if(argc == 1)
    fputs("No data\n", stderr), exit(1);
 
    create(&queue);
    
    for(i = 1; i < argc; ++i)
    {
    val = atoi(argv[i]);
    enqueue(&queue, val);
    }
    
    puts("Before removing duplicates:");
    print(&queue);
    unique(&queue);
    puts("After removing duplicates:");
    print(&queue);
    delete(&queue);
 
    exit(0);
}
 
void create(struct queue* l)
{
    l->head = l->tail = NULL;
}
 
void delete(struct queue* l)
{
    struct node* n;
    while(l->head != NULL)
    {
    n = l->head;
    l->head = l->head->next;
    FREE(n);
    }
}
 
void enqueue(struct queue* l, int elem)
{
    struct node* n;
    n = malloc(sizeof(struct node));
    n->data = elem;
    n->next = NULL;
    if(l->head == NULL)
    l->head = n;
    else
        l->tail->next = n;
    l->tail = n;
}
 
int dequeue(struct queue* l)
{
    struct node* n;
    int retval;
    n = l->head;
    if(n == NULL)
    abort();        /* тут обрабока случая с пустым списком */
    retval = n->data;
    l->head = l->head->next;
    FREE(n);
    return retval;
}
 
void unique(struct queue* l)
{
    struct node *p, *q, *last;
    p = l->head;
    while(p != NULL)
    {
    last = p;
    q = last->next;
    while(q != NULL)
    {
        if(q->data == p->data)
        {
        last->next = q->next;
        FREE(q);
        q = last->next;
        }
        else
        {
        last = q;
        q = q->next;
        }
    }
    p = p->next;
    }
}
 
int empty(struct queue* l)
{
    return l->head != NULL;
}
 
void print(struct queue* l)
{
    struct node* n;
    n = l->head;
    while(n != NULL)
    {
    printf("%d ", n->data);
    n = n->next;
    }
    
    putchar('\n');
}
Код
[nameless@desktop c]$ ./sample 1 2 3 4
Before removing duplicates:
1 2 3 4 
After removing duplicates:
1 2 3 4 
[nameless@desktop c]$ ./sample 2 2 2 2
Before removing duplicates:
2 2 2 2 
After removing duplicates:
2 
[nameless@desktop c]$ ./sample 1 2 3 3 2 4
Before removing duplicates:
1 2 3 3 2 4 
After removing duplicates:
1 2 3 4 
[nameless@desktop c]$
Обработку ошибочных ситуаций (невыделение памяти, удаление элементов из пустой очереди) сделаешь сам
Yandex
Объявления
08.09.2011, 11:15     Оставить в списке только первые вхождения одинаковых элементов
Ответ Создать тему
Опции темы

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