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

Поиск и удаление максимального значения в односвязном списке С++ - C++

Восстановить пароль Регистрация
 
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 129
12.02.2014, 21:58     Поиск и удаление максимального значения в односвязном списке С++ #1
Помогите пожалуйста,никак не могу понять что не так с кодом,почему не ищет максимальный элемент и не удаляет его.
Задание:Сформировать односвязный линейный список по файлу чисел. Удалить из списка узлы с максимальным значением информационного поля.
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
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
struct list
{
    int x;  //информационное поле, данные, любой порядковый тип
    list *next;     //указатель на следующий элемент
};
typedef list *Plist;    //ссылка на структуру
 
void CreateFile(fstream&fout, char namefile[15])
{
    int x;
    fout.open(namefile, ios::out|ios::binary);  //двоичный файл
    cout<<"\n Введите x,для окончания ввода введите 1111:";
    cin>>x;
    while (x!=1111)
    {   
        fout.write((char *) &x, sizeof x);
        cin>>x;
    }
    fout.close();
    cout<<"\n";
}
 
void ReadFile(fstream&fin, char namefile[15])
{
    int x;
    fin.open(namefile, ios::in|ios::binary);    //двоичный файл
    if (fin.is_open())
    {
        cout<<"Содержимое файла "<<namefile<<" :\n";
        while (fin.read((char *) &x, sizeof x))
        {
            cout<<x<<" ";
        }
    }
    fin.close();
    cout<<"\n";
}
void Delete_after_q (Plist &q, int &number)
{
    Plist p;
    p = q-> next;
    q -> next = p -> next;  //наведение связей
    number = p -> x;    //сохранение данных
    delete p;       //освобождение памяти
}
 
void Search_max(Plist&first)
{
    Plist p=first;
    int max=-10000;
    while(p!=nullptr)
    {
    if(p->x>max)
    max=p->x;
    p=p->next;
    }
}
 
 
void main()
{
    setlocale (LC_ALL, "Russian");
    fstream fout, fin;
    Plist first;
    int a, max;
    char namefile[15],ch;
    cout<<"\n Введите имя файла:";
    cin>>namefile;
    cout<<"\n Создать новый файл? (y/n)";
    cin>>ch;
    if (ch=='y') 
    {
        CreateFile(fout, namefile);
        ReadFile(fin, namefile);
    } 
    else
    {
        ReadFile(fin, namefile);
    };
    fin.open(namefile, ios::in | ios::binary);
    if (! fin.is_open())
    {
        cout<<"\n Ошибка открытия файла"; exit(1);
    }
    Search_max(first);
    fin.close();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2014, 21:58     Поиск и удаление максимального значения в односвязном списке С++
Посмотрите здесь:

удаление/добавление записи по ключу в односвязном списке C++
C++ Поиск максимального значения в списке.
C++ Сортировка вставками в односвязном списке
Ошибка в односвязном списке C++
удаление и поиск в списке C++
Удаление узлов в односвязном списке C++
C++ Как можно сместить ID в односвязном списке после удаление элемента
Ошибка в односвязном списке C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 11:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru