Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2016, 13:57   #1
awashwinter
 
Регистрация: 05.10.2015
Сообщений: 3
По умолчанию Не работает функция

Здравствуйте, уважаемые знатоки. Прошу вашей помощи. Не работает функция delete_min_on_left. Смысл задания- просмотреть двусвязный список слева направо-удалить максимум; просмотреть список справа налево- удалить минимум.Не работает именно удалить минимум(delete_min_on_left). В чем ошибка? Код прилагается.

Цитата:
#include <iostream>
#include <Windows.h>
#include <fstream>
using namespace std;
struct node
{
int number;
node *next;
node *last;
};
typedef node* pnode;
node* head = NULL;
node* tail = NULL;
node* ptrLast = NULL;

void Delete(int x, pnode&head)
{
pnode temp = head;
while ((temp != NULL) && (temp->number != x))
temp = temp->next;
if (temp == NULL)
return;

pnode last = temp->last;
pnode next = temp->next;
if (last != NULL)
last->next = next;
if (next != NULL)
next->last = last;
delete temp;
}
void Add_elem(int&n)
{
n = 0;
int numb = -1;
while (numb != -999){
cout << "Введите Число: (-999=Exit)--> ";
cin >> numb;
if (numb == -999)break;
pnode ptr = new node;
ptr->number = numb;
ptr->next = NULL;
tail = ptr;
if (head == NULL)
{
head = ptr;
ptrLast = ptr;
ptr->last = NULL;
}
ptr->last = ptrLast;
ptrLast->next = ptr;
ptrLast = ptr;
n++;
}
}
void Out_list()
{
pnode ptr = NULL;
if (head == NULL)
{
cout << "\t!!! СПИСОК ПУСТ !!!\n\n";
}
cout << "* * * * * СПИСОК: СЛЕВА НАПРАВО * * * * *\n\n";
ptr = head;
while (1)
{
cout << ptr->number << " ";
if (ptr->next == 0)
break;
ptr = ptr->next;
}
cout << "\n\n";
}
void Out_list_reverse()
{
node *ptr = NULL;
if (head == NULL)
{
cout << "\t!!! СПИСОК ПУСТ !!!\n\n";
}
cout << "* * * * * СПИСОК: СПРАВА НАЛЕВО * * * * *\n\n";
ptr = tail;
while (ptr!=head)//ptr != head
{
cout << ptr->number << " ";
// if (ptr->last == 0)
// break;
ptr = ptr->last;
}
cout << ptr->number << " ";
cout << "\n\n";

}
void create_file(ofstream &fout, char *namef)
{
pnode p = head;

if (head == NULL)
{
cout << "Spisok pust" << endl;
}
else
{
fout.open(namef, ios::binary);
while (p != NULL)
{
fout.write((char*)&p, sizeof p);
p = p->next;

}
}
fout.close();
}
void read_file(ifstream&fin, char *namef)
{
pnode p, r;
r = NULL;
p = head;
fin.open(namef, ios::binary);

do{
p = new node;
fin.read((char*)&p, sizeof p);
cout << p->number<<" ";
p->last = NULL;
p->next = NULL;
p->last = r;
if (r != NULL)
r->next = p;
else
head = p;
r = p;
} while (!fin.eof());

tail = p->last;
tail->next = NULL;
p = tail;
fin.close();
}
void delete_max_on_right(int&n)
{
int max;
//pnode ptr = NULL;
pnode cur;

if (head == NULL)
cout << "Spisok pust" << endl;
else
{
cur = head;
max = cur->number;
while (cur!=NULL)
{
if (cur->number > max)
max = cur->number;
cur = cur->next;
}
}
cout << endl;
cout << "max= " << max;
cout << endl;
Delete(max, head);
}
void delete_min_on_left(int&n)
{
int min;
//pnode ptr = NULL;
pnode cur;

if (head == NULL)
cout << "Spisok pust" << endl;
else
{
cur = tail;
min = cur->number;
while (1)
{
if (head == cur){
if (min>cur->number)
min = cur->number;
break;
}
if (cur->number < min)
min = cur->number;
cur = cur->last;

}
}
cout << endl;
cout << "min= " << min;
cout << endl;
Delete(min, tail);
}
void main()
{
int n;
ofstream fout;
ifstream fin;
char namef[10];
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int choice;
int num=-1;
while (1)
{
cout << endl;
cout << "1. Добавить Элемент\n";
cout << "2. Просмотр Списка Слева Направо\n";
cout << "3. Просмотр Списка Справа Налево\n";
cout << "4. Создать файл/////Read from file\n";
cout << "5. Просмотр Списка Слева Направо с удалением максимума\n";
cout << "6. Просмотр Списка Справа Налево с удалением минимума\n";
cout << "7. Выход!!!\n";
cout << "Ваш выбор: ";
cin >> choice;
switch (choice){
case 0:
system("CLS");
goto ex;
break;
case 1:
system("CLS");
Add_elem(n);
system("CLS");
break;
case 2:
system("CLS");
Out_list(); break;
system("CLS");
case 3:
system("CLS");
Out_list_reverse();
system("CLS");
break;
case 4:
system("CLS");
cout << "Enter name of file: ";
cin >> namef;
char ch;
cout << "\n\nRead or write (r/w)? ";
cin >> ch;
if (ch == 'w')
create_file(fout, namef);
if (ch == 'r')
read_file(fin, namef);
system("CLS");
break;
case 5:
system("CLS");
delete_max_on_right(n); break;
system("CLS");
case 6:
system("CLS");
delete_min_on_left(n); break;
system("CLS");
}
}
ex: system("pause");
}
awashwinter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает функция mazanakee Visual C++ 0 22.02.2015 19:20
Не работает функция AS2.0 Flash yaprogrammist Общие вопросы Web 2 25.02.2014 20:19
Sendmail работает, функция mail() работает, но есть проблема. PavelNAndreev PHP 8 27.01.2014 12:45
Не работает функция max400 PHP 13 29.07.2011 10:28
Не работает функция kakawkin Общие вопросы Delphi 3 28.05.2011 15:09