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

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

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

Показать сообщение отдельно
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 55
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();
 
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru