零基础网站开发设计,江门网站制作报价,奉贤品牌网站建设,微信网页版手机端作业#xff1a;
将之前实现的顺序表、栈、队列都更改成模板类
顺序表
#include iostreamusing namespace std;templatetypename Tclass SeqList
{
private:T *ptr;int size; //总长度int len 0; //当前顺序表实际长度public://初始…作业
将之前实现的顺序表、栈、队列都更改成模板类
顺序表
#include iostreamusing namespace std;templatetypename Tclass SeqList
{
private:T *ptr;int size; //总长度int len 0; //当前顺序表实际长度public://初始化void init(int n){this-ptr new T[n];this-len 0;this-size n;}//判空bool empty(){return this-len 0;}//判满bool full(){return this-len this-size;}//尾插void push_back(T e){//判断是否满了if(this-full()){return ;}this-ptr[len] e;}//插入void insert(T index){//判断是否满了if(this-full()){return ;}int i,pos;cout pos;cin pos;for(ithis-len; ipos; i--){this-ptr[i] this-ptr[i-1];}this-ptr[i] index;this-len;}//任意位置删除void del(int index){if(empty() 1){return;}int i;for(i index - 1; i this-len; i){this-ptr[i] this-ptr[i1];}this-len--;}//尾删void pop_back(int index){if(empty() 1){return;}int i;for(i 0; i index; i){this-ptr[this-len--] 0;}}//求长度void my_size(){cout len this-len endl;}//获取任意位置元素T at(int index){static T num;num this-ptr[index-1];return num;}//将顺序表进行排序void sort(bool flag){int i,j;if(flag){for(i 0; i this-len; i){for(j 0; j this-len - 1- i;j){if(this-ptr[j]this-ptr[j1]){T temp this-ptr[j];this-ptr[j] this-ptr[j1];this-ptr[j1] temp;}}}}else{for(i 0; i this-len; i){for(j 0; j this-len - 1- i;j){if(this-ptr[j]this-ptr[j1]){T temp this-ptr[j];this-ptr[j] this-ptr[j1];this-ptr[j1] temp;}}}}}//定义展示函数void show(){//判空if(empty() 1){return;}for(int i0; ithis-len; i){coutthis-ptr[i] ;}coutendl;}
};
int main()
{SeqListint s1; //实例化一个顺序表对象s1.init(10);s1.show();s1.insert(8);s1.insert(7);s1.insert(9);s1.insert(2);s1.show();couts1.at(2)endl;s1.del(1);s1.show();return 0;
}运行结果 栈
#include iostreamusing namespace std;templatetypename T
class Stack //定义一个栈的模板类
{
private:T *ptr; //栈int num; //栈顶元素数int max; //栈的空间初始大小
public:Stack():num(-1),max(20){ptr new T[max]; //申请空间}Stack(int t,int m):num(t),max(m){ptr new T[max]; //申请栈空间for(int i0;inum1;i){coutinput;cinptr[i];}}~Stack(){delete [] ptr;}Stack(Stack s):ptr(new T(*s.ptr)),num(s.num),max(s.max){}//栈顶元素访问T top(){return ptr[num];}//判空bool empty(){return num-1;}//元素数int size(){return num1;}//向栈顶插入元素void push(T n){//判满if(nummax-1){coutfullendl;return;}this-num;this-ptr[num] n;}//删除栈顶元素void pop(){//判空if(empty()){return;}this-num--;}void show(){for(int i0;inum1;i){coutptr[i] ;}coutendl;}
};
int main()
{Stack string s1(4,10); //有参构造s1.show();s1.pop();s1.show();string buff;coutpush;cinbuff;s1.push(buff);s1.show();couts1.size() s1.top()endl;return 0;
}运行结果 队列
#include iostream
#include stack
using namespace std;
//队列模板类
templatetypename T
class Queue
{
private:int max; //队列最大容量int num; //队列内元素数T *ptr; //容器
public:Queue():max(20),num(0){ptr new T[this-max];}~Queue(){delete [] ptr; //释放空间}Queue(Queue q):max(q.max),num(q.num),ptr(new T(*q.ptr)){} //深拷贝T front(){if(empty()){coutnullendl;T a;return a;}return ptr[0];}T back(){if(empty()){coutnullendl;T a;return a;}return ptr[num-1];}bool empty(){return num0;}int size(){return num;}void push(T n){//判满if(nummax){coutfullendl;return;}this-num;this-ptr[num-1] n;}void pop(){//判空if(empty()){coutnullendl;return;}for(int i0;ithis-num;i){this-ptr[i]this-ptr[i1];}this-num--;}void show(){for(int i0;inum;i){coutptr[i] ;}coutendl;}
};
int main()
{Queuestring q;//判空if(q.empty()){q.push(hello);q.push(world);q.push(I);q.push(love);q.push(china);q.show();}coutq.back()endl;coutq.front()endl;coutq.size()endl;q.pop();q.show();return 0;
}运行结果 知识梳理 C11新特性之智能指针重要