-
Notifications
You must be signed in to change notification settings - Fork 0
/
Deq_List_One.h
68 lines (62 loc) · 1.36 KB
/
Deq_List_One.h
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
#include "Class_List1.h"
#include <stdio.h>
class Deq_List_One : public List_One //double side queue aka DEQ
{ protected:
int ID = 0;
static int counter;
public:
//constructors
Deq_List_One(void):List_One(){
ID = counter;
printf("Default Deq_List_One %d constructor!!!\n",ID);
counter++;
};
Deq_List_One(int N):List_One(N){
ID = counter;
printf("Hand made Deq_List_One %d constructor!!!\n",ID);
counter++;
};
Deq_List_One(int N,int Diapazon,int Shift):List_One(N,Diapazon,Shift){
ID = counter;
printf("Random made Deq_List_One %d constructor!!!\n",ID);
counter++;
};
//destructor
~Deq_List_One(){
printf("Deq_List_One %d destructor!!!\n",ID);
counter--;
}
//deq oriented methods
void Push_Left(int N){
Insert(N,1);
}
void Push_Right(int N){
Append(N);
}
int Pop_Left(void){
int tmp;
tmp=GetValue(1);Erase(1);
return tmp;
}
int Pop_Right(void){
int tmp;
tmp=GetValue(ListLength());
Erase(ListLength());
return tmp;
}
void Print(void);
};
int Deq_List_One::counter = 0;
void Deq_List_One::Print(void)
{
int tmp,Count,Num=ListLength();
if(Empty()){
printf("Deq %d is Empty!!!\n",ID); return;
}
for(Count=1; Count<=Num; Count++)
{
tmp=Pop_Left();printf("%d ",tmp);
Push_Right(tmp);
}
printf("\n");
}