update
This commit is contained in:
78
practical_exercises/10_day_practice/day8/类模板/模拟栈.cpp
Normal file
78
practical_exercises/10_day_practice/day8/类模板/模拟栈.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>Stack<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>T<EFBFBD><EFBFBD>ʾջ<EFBFBD>д<EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><EFBFBD><EFBFBD>MAXSIZE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>Ĵ<EFBFBD>С<EFBFBD><EFBFBD>
|
||||
*/
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
template<class T, int MAXSIZE>
|
||||
class Stack{
|
||||
private:
|
||||
T elem[MAXSIZE];
|
||||
int top;
|
||||
public:
|
||||
Stack(){top=0;};
|
||||
void push(T e);
|
||||
T pop();
|
||||
bool empty(){
|
||||
if (top<=-1)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
void setEmpty(){
|
||||
top=-1;
|
||||
}
|
||||
bool full(){
|
||||
if (top>=MAXSIZE-1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
/*
|
||||
ԭ<EFBFBD>ͣ<EFBFBD>
|
||||
template <ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>::<3A><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>){};
|
||||
*/
|
||||
template<class T, int MAXSIZE>
|
||||
void Stack<T,MAXSIZE>::push(T e){
|
||||
if(full()){
|
||||
cout<<"ջ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>";
|
||||
return;
|
||||
}
|
||||
elem[++top]=e;
|
||||
}
|
||||
|
||||
template<class T, int MAXSIZE>
|
||||
T Stack<T,MAXSIZE>::pop(){
|
||||
if(empty()){
|
||||
cout<<"ջ<EFBFBD>ѿգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>"<<endl;
|
||||
return 0;
|
||||
}
|
||||
return elem[top--];
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
//<2F><>ģ<EFBFBD><C4A3>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
||||
Stack<int,10> iStack;
|
||||
Stack<char,10> cStack;
|
||||
iStack.setEmpty();
|
||||
cStack.setEmpty();
|
||||
cout<<"-------intStack----\n";
|
||||
int i;
|
||||
for(i=1;i<11;i++)
|
||||
iStack.push(i);
|
||||
for(i=1;i<11;i++) cout<<iStack.pop()<<"\t";
|
||||
cout<<"\n\n-------charStack----\n";
|
||||
cStack.push('A'); cStack.push('B');
|
||||
cStack.push('C'); cStack.push('D');
|
||||
cStack.push('E');
|
||||
for(i=1;i<6;i++) cout<<cStack.pop()<<"\t";
|
||||
cout<<endl;
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
||||
72
practical_exercises/10_day_practice/day8/类模板/类模板特化.cpp
Normal file
72
practical_exercises/10_day_practice/day8/类模板/类模板特化.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
//<2F><><EFBFBD><EFBFBD>һͨ<D2BB><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><E0A3AC><EFBFBD>ܹ<EFBFBD>ֱ<EFBFBD>Ӵ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дӴ<D0B4><D3B4><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#include<iostream>
|
||||
#include<cstring>
|
||||
using namespace std;
|
||||
const int Size=5;
|
||||
template<class T>
|
||||
class Array{
|
||||
private:
|
||||
T a[Size];
|
||||
public:
|
||||
Array(){
|
||||
for(int i=0;i<Size;i++){
|
||||
a[i]=0;
|
||||
}
|
||||
}
|
||||
T &operator[](int i);
|
||||
void Sort();
|
||||
};
|
||||
|
||||
template<class T> T& Array<T>::operator[](int i){
|
||||
if(i<0||i>Size-1){
|
||||
cout<<"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>Խ<EFBFBD>磡"<<endl;
|
||||
exit(1);
|
||||
}
|
||||
return a[i];
|
||||
}
|
||||
|
||||
template<class T> void Array<T>::Sort(){
|
||||
int p;
|
||||
for(int i=0;i<Size-1;i++){
|
||||
p=i;
|
||||
for(int j=i;j<Size;j++){
|
||||
if(a[p]<a[j])
|
||||
p=j;
|
||||
}
|
||||
T t=a[p];
|
||||
a[p]=a[i];
|
||||
a[i]=t;
|
||||
}
|
||||
}
|
||||
//template <> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><<3C>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>::<3A>ػ<EFBFBD><D8BB><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>){}
|
||||
template<> void Array<char *>::Sort(){
|
||||
int p;
|
||||
for(int i=0;i<Size-1;i++){
|
||||
p=i;
|
||||
for(int j=i+1;j<Size;j++)
|
||||
if(strcmp(a[p],a[j])<0)
|
||||
p=j;
|
||||
char* t=a[p];
|
||||
a[p]=a[i];
|
||||
a[i]=t;
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
Array<int> a1;
|
||||
Array<char*>b1;
|
||||
a1[0]=1;a1[1]=23;a1[2]=6;
|
||||
a1[3]=3; a1[4]=9;
|
||||
a1.Sort();
|
||||
for(int i=0;i<5;i++)
|
||||
cout<<a1[i]<<"\t";
|
||||
cout<<endl;
|
||||
b1[0]="x1"; b1[1]="ya"; b1[2]="ad";
|
||||
b1[3]="be"; b1[4]="bc";
|
||||
b1.Sort();
|
||||
for(int i=0;i<5;i++)
|
||||
cout<<b1[i]<<"\t";
|
||||
cout<<endl;
|
||||
system("pause");
|
||||
}
|
||||
Reference in New Issue
Block a user