C++大作业说明Word文件下载.docx
- 文档编号:15921048
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:10
- 大小:49.67KB
C++大作业说明Word文件下载.docx
《C++大作业说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《C++大作业说明Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
//入队
Tdequeue();
//出队
};
//定义顺序栈模板类
classsq_stack
private:
//顺序栈容量
inttop;
//栈顶指针
T*s;
//顺序栈向量指针
sq_stack(int);
//构造函数,建立空栈
intemptystack();
//测试栈是否下溢
voidpush(T);
//入栈
Tpop();
//出栈
Tget();
//读栈顶元素
voidprint();
//从栈顶到栈底输出栈中元素
//定义循环队列类模板构造函数
template<
sq_queue<
T>
:
sq_queue(intm)
mm=m+1;
//设置队列容量,考虑到循环队列少用一个存储单元
q=newT[mm];
//动态分配循环队列存储空间
front=rear=mm-1;
//设置空队列
}
//定义顺序栈类模板构造函数
sq_stack<
sq_stack(intm)
mm=m;
//设置顺序栈容量
s=newT[mm];
//动态分配顺序栈存储空间
top=0;
//设置空栈
//定义循环队列类模板成员函数
intsq_queue<
emptyqueue()
if(front==rear)return1;
elsereturn0;
voidsq_queue<
enqueue(Tx)
rear=(rear+1)%mm;
q[rear]=x;
Tsq_queue<
dequeue()
front=(front+1)%mm;
returnq[front];
//定义顺序栈类模板成员函数
//顺序表逆置.cpp
#include"
sq_queue_sq_stack.h"
voidmain()
sq_queue<
char>
queue(20);
//建立容量为20的队列对象
sq_stack<
stack(20);
//建立容量为20的栈对象
charch;
for(ch='
a'
;
ch<
='
f'
ch++)
stack.push(ch);
stack.print();
while(!
stack.emptystack())
queue.enqueue(stack.pop());
queue.emptyqueue())
stack.push(queue.dequeue());
cout<
<
"
按“Y”键结束"
cin>
>
ch;
2.以下程序涉及类模板、友元函数、插入符“<
”重载函数,补充成员函数、友元函数的定义,实现将顺序表A按元素值奇、偶数拆分成两个表,A表存放奇数,B表存放偶数。
//sq_list.h
iomanip.h>
//定义顺序表类模板
typenameT>
classsq_list
//顺序表空间容量
intnn;
//顺序表长度
T*L;
//指向顺序表向量的指针
sq_list(int);
//构造函数,建立空顺序表
intlength();
//成员函数,计算顺序表当前长度
Tget(int);
//成员函数,读取顺序表中第i个元素
voidinsert(T,int);
//成员函数,在顺序表的第i个元素之前插入一个元素
voiddel(int);
//成员函数,删除顺序表中第i个元素
friendostream&
operator<
(ostream&
constsq_list<
&
);
//声明友元函数,插入符<
重载为友元函数
friendvoidseparate(sq_list<
sq_list<
//声明友元函数,拆分顺序表
//定义构造函数
sq_list<
sq_list(intm)
L=newT[mm];
//动态分配顺序表存储空间
nn=0;
//空表,长度为0
//定义成员函数
//定义友元函数
//拆分顺序表.cpp
#include"
sq_list.h"
sq_list<
int>
A(20),B(20);
for(inti=1;
i<
=10;
i++)A.insert(i,i);
A;
separate(A,B);
A<
B;
3.以下程序涉及类模板的派生、抽象类和虚函数,补充成员函数的定义,实现对完全二叉树的DLR、LDR和LRD遍历。
//binary_tree.h
#include<
//二叉树结点结构体模板
structbtnode{
Tdata;
//数据域
btnode*lchild,*rchild;
//左、右指针域
//二叉树类模板
//抽象类
classbinary_tree
btnode<
*root;
binary_tree(){root=NULL;
}//构造函数,初始化二叉链表
voidcreat_BT();
//建立二叉树
virtualvoidtrav_BT()=0;
//说明纯虚函数(遍历二叉树)
//派生类
classpretrav:
publicbinary_tree<
voidtrav_BT()//遍历二叉树
{
btnode<
*p=root;
preorder(p);
//先序遍历
cout<
endl;
}
classintrav:
inorder(p);
//中序遍历
classpostrav:
postorder(p);
//后序遍历
//定义成员函数(建立二叉树)
//定义函数模板
voidpreorder(btnode<
*p)
if(p!
=NULL)
{
cout<
p->
data;
preorder(p->
lchild);
rchild);
}
voidinorder(btnode<
inorder(p->
voidpostorder(btnode<
postorder(p->
//完全二叉树遍历.cpp
binary_tree.h"
binary_tree<
*p;
先序遍历:
p=newpretrav<
p->
creat_BT();
trav_BT();
中序遍历:
p=newintrav<
后序遍历:
p=newpostrav<
按“Y”键结束:
二、大作业的任务与要求
选择或部分选择类模板、类模板的派生类、模板函数、虚函数等方法完成专题。
●可供选择的题目(也可以自己拟定题目):
1.顺序表的查找
2.顺序表的排序
3.哈夫曼编码、译码
●专题作业要求:
1.对问题用文字详细描述;
2.说明所采用的C++语言的具体方法;
3.如果具有类的继承,画出类结构图;
4.程序源代码并且加序言性注释和程序段的功能注释;
5.程序运行结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 作业 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)