В общем сами ошибки .
Содержание файлов:
main.cpp
#include <cstdlib>
#include <iostream>
#include "Dek.h"
using namespace std;
Dek<char> dek;
void Pause(void)
{
char b;
while(1){
cout<< "\nНажмите ESC для продолжения\n";
cin >> b;
if(b == 27) break;
}
}
void Push(void);
void Pop(void);
void Pop_Beg(void);
void Top(void);
void Print_Begin(void);
void Beg(void);
int main(void)
{
char menu;
int run = true;
setlocale(LC_CTYPE , "Russian");
do {
system("clear");
cout << "ВСЕГО " << dek.Count() << " ЭЛЕМЕНТОВ" << endl;
cout << "1.Добавить\n2.Извлечь последний элемент\n3.Извлечь первый элемент\n4.Показать последний элемент\n5.Показать первый элемент\n6.Отладочная печать\n7.Выход" << endl;
cin >> menu;
cin.clear();
switch(menu)
{
case '1': Push(); break;
case '2': Pop(); break;
case '3': Pop_Beg(); break;
case '4': Top(); break;
case '5': Beg(); break;
case '6': Print_Begin(); break;
case '7': system("clear"); run = false;
}
}while(run);
return 0;
}
void Push()
{
system("clear");
if(dek.Push())
cout << "Элемент добавлен";
else
cout << "Дек полный";
cin.clear();
Pause();
return;
}
void Pop(void)
{
system("clear");
if(dek.Empty())
cout << "Дек пустой";
else
{
dek.Pop();
cout << "Элемент удален";
}
Pause();
return;
}
void Pop_Beg(void)
{
system("clear");
if(dek.Empty())
cout << "Дек пустой";
else
{
dek.Pop_Begin();
cout << "Элемент удален";
}
Pause();
return;
}
void Top(void)
{
system("clear");
if(dek.Empty())
cout << "Дек пустой";
else
cout << dek.Top();
Pause();
return;
}
void Beg(void)
{
system("clear");
if(dek.Empty())
cout << "Дек пустой";
else
cout << dek.Beg();
Pause();
return;
}
void Print_Begin(void)
{
system("clear");
if(dek.Empty())
cout << "Дек пустой";
else
dek.Print_Begin();
Pause();
return;
}
Dek.h
#ifndef DEK_H
#define DEK_H
template <class DataType> class Dek
{
private:
struct Element
{
DataType data;
Element *next, *prev;
} * pdek;
struct Element *beg;
public:
Dek ();
~Dek ();
bool Empty (void);
DataType Top (void);
DataType Beg (void);
void Pop (void);
void Pop_Begin (void);
int Push (void);
int Print_Begin (void);
int Count (void);
};
#endif // DEK_H
Dek.cpp
#include "Dek.h"
#include <iostream>
template <class DataType> Dek<DataType>::Dek ()
{
pdek = NULL;
}
template <class DataType> Dek<DataType>::~Dek ()
{
Element * temp;
while (pdek)
{
temp = pdek;
pdek = pdek->next;
delete temp;
}
}
template <class DataType> bool Dek<DataType>::Empty()
{
if (pdek == NULL)
return true;
else
return false;
}
template <class DataType> DataType Dek<DataType>::Top ()
{
return pdek->data;
}
template <class DataType> int Dek<DataType>::Count ()
{
int i;
Element *count = pdek;
while(count)
{
++i;
count = count->next;
}
return i;
}
template <class DataType> void Dek<DataType>::Pop ()
{
if(pdek->next != NULL)
{
pdek = pdek->next;
pdek->prev = NULL;
}
else
{
pdek = NULL;
beg = NULL;
}
}
template <class DataType> void Dek<DataType>::Pop_Begin ()
{
if(beg->prev != NULL)
{
beg = beg->prev;
beg->next = NULL;
}
else
{
pdek = NULL;
beg = NULL;
}
}
template <class DataType> DataType Dek<DataType>::Beg ()
{
return beg->data;
}
template <class DataType> int Dek<DataType>::Push ()
{
Element *ins = new Element;
if (ins==NULL) return 0;
if (pdek==NULL)
{
std::cout << "Введите значение" << std::endl;
std::cin >> ins->data;
pdek = ins;
beg = ins;
ins->next = NULL;
ins->prev = NULL;
}
else
{
std::cout << "Введите значение" << std::endl;
std::cin >> ins->data;
ins->next = pdek;
pdek->prev = ins;
pdek = ins;
pdek->prev = NULL;
}
return 1;
}
template <class DataType> int Dek<DataType>::Print_Begin()
{
Element * temp;
temp = beg;
while (temp)
{
std::cout << temp->data;
temp = temp->prev;
}
return 1;
}