Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект1 / Wladimir / kurs / ListEmpl
.h#if !defined(AFX_LISTEMPL_H__6DDC6F88_1337_43EA_AEB9_6B6F6DED87BE__INCLUDED_)
#define AFX_LISTEMPL_H__6DDC6F88_1337_43EA_AEB9_6B6F6DED87BE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ListEmpl.h : header file
//
#include <iostream.h>
#include <stdio.h>
//#include "Person.h"
//typedef CEmpl CInf;
template <class CInf>
class CElem{
public:
CInf inf;
CElem<CInf> *next;
CElem<CInf> *prev;
CElem(CInf inf0){
inf = inf0;
next = 0;
prev = 0;
}
~CElem(){}
};
template <class CInf>
class CList{
public:
CElem<CInf> *beg;
CElem<CInf> *end;
public:
CList(){ beg = 0; end = 0;}
~CList(){
if (beg != 0){
CElem<CInf> *buf = beg;
while(buf){
buf = buf->next;
delete beg;
beg = buf;
}
}
}
void AddEl(CInf inf){
CElem<CInf> *Elem = new CElem<CInf>(inf);
if (beg == 0) beg = end = Elem;
else{
Elem->prev = end;
end->next = Elem;
end = Elem;
}
}
void DelAllElem(){
if (beg != 0){
CElem<CInf> *buf = beg;
while(buf){
buf = buf->next;
delete beg;
beg = buf;
}
}
beg=end=0;
}
void DelEl(CElem<CInf> *El){
if (El==beg){
if(El==end){
beg=0;
end=0;
}else{
beg=beg->next;
beg->prev=0;
}
}else{
if(El==end){
end=end->prev;
end->next=0;
}
else{
(El->prev)->next = El->next;
(El->next)->prev = El->prev;
}
}
delete El;
}
/* void DelEl(int k){
CElem<CInf> *buf = beg;
int i = 0;
while((i<k-1) && (buf->next != 0)){
buf = buf->next;
i++;
}
if (buf = beg){
beg = beg->next;
beg->prev = 0;
}
else{
if (buf=end){
end= end->prev;
end->next=0;
}
else{
buf->prev->next = buf->next;
buf->next = buf->prev;
}
}
delete buf;
}
*/
void InsEl(int k, CInf d){
CElem<CInf> *Elem = new CElem<CInf>(d);
CElem<CInf> *buf = beg;
int i = 1;
while((i<k-1) && (buf->next != 0)){
buf = buf->next;
i++;
}
Elem->next = buf->next;
buf->next = Elem;
Elem->prev = buf;
buf->next->prev = Elem;
}
void InsEl(int k, CElem *Elem){
CElem<CInf> *buf = beg;
int i = 1;
if (k==1){
Elem->next = beg;
beg = Elem;
return;
}
while((i<k-1) && (buf->next != 0)){
buf = buf->next;
i++;
}
if (buf->next == 0) end = Elem;
Elem->next = buf->next;
buf->next = Elem;
Elem->prev = buf;
buf->next->prev = Elem;
}
CElem * GetEnd(){return end;}
};
#endif // !defined(AFX_LISTEMPL_H__6DDC6F88_1337_43EA_AEB9_6B6F6DED87BE__INCLUDED_)
Соседние файлы в папке kurs