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

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

Войти
Регистрация
Восстановить пароль
 
kingskeeper
7 / 7 / 1
Регистрация: 08.11.2010
Сообщений: 26
#1

Двунаправленные списки - C++

05.06.2011, 19:30. Просмотров 385. Ответов 0
Метки нет (Все метки)

Здравствуйте всем!
Написал программу для составления из одной таблицы другую. Использую двунаправленный список и классы.
Вопрос в следующем. Не работают две подпрограммы: удаление записи из таблицы и считывание из бинарного файла.
Подскажите,в чем ошибка,пожалуйста.
Заранее благодарен
PS не работает - это значит программа экстренно завершает работу.
Структуры:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct person
{ char fam[30];
  char im[5];
  int god;
  char mark[30];
  char strana[30];
};
struct perech
{ char mark[30];
  int ng;
};
struct node1
{ person s;
  node1 *next,*pre;
};
struct node2
{ perech g;
  node2 *next,*pre;
};
Удаление из таблицы:
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
void tabl1::Delete(int i)
{ node1 *a,*b,*c;
int j;
char ch;
if(!(i<0||i>=n+1))
 {
 for(j=0,a=beg1;j<(i-1);j++,a=a->next);
 cout<<"Are you sure that you need delete data about "<<a->s.fam<<" "<<a->s.im<<" "
     <<a->s.god<<" "<<a->s.mark<<"  (y or n)"<<endl;
cin>>ch;
if(ch=='y')
{if(a==beg1)
{
beg1=a->next;
beg1->pre=NULL;
delete a;
n--;
return;
}
if(a==end1)
{
end1=a->pre;
end1->next=NULL;
delete a;
n--;
return;
}
 
b=a->pre;
c=a->next;
delete a;
b->next=c;
c->pre=b;
n--;
}
}
else {cout<<"Out of index\n";getch();}
}
Считывание из бинарного файла:
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
int tabl2::InputFileBinPerech()
{perech t;
 fstream fin;
 char ch[60];
cout<<"Please enter root to temp Binary file\n";
cin>>ch;
fin.open(ch,ios::in|ios::binary);
if (fin.fail())
{cout<<"Binary File is not opened.";
getch();
fin.close();
return 1;
}
fin.seekg(0,ios::end);
m=fin.tellg()/sizeof(perech);
fin.seekg(0,ios::beg);
del();
for(;fin.good();)
{
fin.read((char*)&t,sizeof(perech));
if(fin.good()){new_(t);}
}
fin.close();
cout<<"Temp file is read\n";
getch();
return 0;
}
Вспомогательные подпрограммы:
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
void tabl2::del()
{
 node2 *a;
 for(a=beg2;a!=NULL;a=beg2,beg2=a->next,delete a);
 beg2=NULL;
 end2=NULL;
}
 
void tabl2::new_(perech &t)
{node2 *t_s,*t_n;
 t_n=new node2();
  if(t_n==NULL) {cout<<"Error. Overload memory data.";getch();return;}
t_s=end2;
if (t_s == NULL)
{beg2=new node2;
beg2->g=t;
beg2->next=NULL;
beg2->pre=NULL;
end2=beg2;
return;
}
t_n->g=t;
t_s->next=t_n;
t_n->pre=t_s;
t_n->next=NULL;
end2=t_n;
m++;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 19:30     Двунаправленные списки
Посмотрите здесь:

Двунаправленные списки - C++
Доброго времени суток! Помогите плиз с задачкой: Определить количество чётных элементов среди элементов расположенных до первого...

работа со списками(двунаправленные списки) - C++
не знаю как написать функцию по добавлению в список элементов с клавиатуры, помогите, пожалуйста список формируется как struct elem ...

ООП. Вложенные структуры. Двунаправленные списки - C++
Доброго времени суток, помогите мне пожалуйста: Структура (header) #include &lt;stdio.h&gt; class CGraph { private: struct...

Списки двунаправленные. Удалить все нулевые элементы - C++
Помогите на писать программу, которая в двунаправленном списке удаляет все нулевые элементы Добавлено через 17 часов 34 минуты все...

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

Списки - C++
Помогите пожалуйста с задачей: В списке L найти такой элемент &quot;y&quot; (если существует), что &quot;y&quot; больше всех предыдущих и меньше всех...

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

Списки C++ - C++
Уважаемые! Препод задал написать линейный, линейный дважды связанный и линейный цикличный списки с любым количеством элементов для каждого....

Списки - C++
Работа со списками( объединение, удаление, вставка и.т.п). при запуске выдает ошибки. :-| устала уже с ней( С++, Builder 6 ...

Списки - C++
Даны 2 списка( из файлов) в третий список поместить те элементы из списка 1, для которых в списке 2 найдутся меньшие элементы! Прошу помочь...


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

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

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