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

Удаление повторяющихся элементов из списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Visual C++ 2012. Консоль. scanf(). Обработка ошибок ввода http://www.cyberforum.ru/cpp-beginners/thread914283.html
Я использую процедуру scanf() для ввода даты через точку (типа 01.01.2000). Мне надо сделать так, чтобы обрабатывались ошибки при вводе (типа 01а2.01.2000), чтобы тогда прога просила ввести дату снова. Как это сделать? я пробовал примерно так: #include <iostream> using namespace std; int main(void)
C++ Дана вещественная квадратная матрица Дана вещественная квадратная матрица. Определить: 1. произведение элементов в тех строках, которые не содержат отрицательных элементов 3. максимум среди элементов диагонали 3. разделить все элементы строки( с макс.элементом) на 10 Определить наличия отрицательных элементов оформить через функцию. http://www.cyberforum.ru/cpp-beginners/thread914280.html
Символьные строки (замена строчных на прописные и на оборот) C++
Как решить задачу. Например в водим cYbErFoRuM,а выведит CyBeRfOrUm то есть меняет строчные на прописные и на оборот.... подскажите как это сделать.
C++ Привести матрицу к треугольному виду
Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду. Найти кол-во строк, среднее арифметическое которых меньше заданной величины Написала вот это #include <iostream> #include <conio.h> using namespace std; const int m=3; void scan( float (*a), int n); void print(float (*a), int n);
C++ Замена printf на cout http://www.cyberforum.ru/cpp-beginners/thread914242.html
Ув. коллеги, Можно ли заменить printf на cout в последнем выражении тернарного оператора (строка 13) без создания новой функции? #include <iostream> using namespace std; int f1(int n); int f2();
C++ Сумма книг Предположим, что вы продаете книгу по программированию на языке C++ для начинающих. Напишите программу, которая позволит ввести ежемесячные объемы продаж в течение года (в количестве книг, а не в деньгах). Программа должна использовать цикл, в котором выводится приглашение с названием месяца, применяя массив указателей на char (или массив объектов string, если вы предпочитаете его),... подробнее

Показать сообщение отдельно
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 52
29.06.2013, 18:41  [ТС]     Удаление повторяющихся элементов из списка
2BumerangSP, спасибо! Идея вроде как понятна, но не думаю что у меня получится реализовать И у меня компилятор ругается на эту строчку.
C++
1
if (!i) return 0;
Да и хочется узнать, что не так у меня. Скидываю целиком всю программу. Работает только до 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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h> 
 
struct list
{int value;
list* next;
list* prev;
list* number;
};
 
void Print_list (list*h)
{
    puts("\nList now:");
    while(h!=NULL)
    {
        printf("%d ",h->value);
        h=h->next;
    }
}
 
 
list *Ins_First(list*first, int n)
{
 
    list*q=new list;
    q->value=n;
    if(first==NULL)     q->next=NULL;
    q->next=first;
    return q;
};
 
list*Creat_List ()
{
    list*head=NULL;
    int num;
    puts ("Enter nambers (end = 0):");
    while (1)
    {
        scanf("%d",&num);
        if (num==0)return head;
        head=Ins_First(head,num);
    }
}
 
list *Del_Same(list *head, int &d)
{
     if(head==NULL) { puts("list empty"); return NULL;}     
     list *p=head, *t, *q, *u;
     int i=0;
     while(p!=NULL)
     {            t=p;
                  while(t->next!=NULL)
                  {              
                              if(p->value==t->next->value)
                              {
                              d=t->next->value;
                              u=head;
                              if(u->value==d){u=head; head=head->next; delete u;}  
                                      while(u->next!=NULL)
                                      {
                                                          if(u->next->value==d)
                                                          {
                                                          q=u->next;
                                                          u->next=u->next->next;
                                                          delete q;
                                                          }
                                      else u=u->next;    
                                      }    
                              } 
                              else t=t->next;
                  }
     p=p->next; 
     }
     return head;
}
 
int main()
{
    int d;
    list*head;
    puts ("Rabota so spiskom");
    head=Creat_List();
    Print_list(head);
    Del_Same (head, d);
    Print_list(head);
 
    getch();
 
}
 
Текущее время: 06:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru