编写一个程序,声明一个点类Point,实现点的偏移,==,!其中各个成员函数就是实现这种转换并完成相应的矩阵运算功能。程序的执行结果如下:A矩阵:123456B矩阵:123456C矩阵:142536A+B矩阵:2468 10 12A-B矩阵:000000A*C矩阵:14 3232 77虽然这种转换比较复杂,但解决了矩阵运算通用性问题。......
2023-11-07
本节采用类模板设计几个通用的数据结构,这种类属程序设计方法不仅提高了程序的可靠性,而且大大提高了程序设计效率。
【例5.9】抽象数据类型线性表的定义如下:
设计满足上述定义的List<T>类模板,并用相关数据对程序进行测试。
解:对于线性表采用带头节点的单链表的存储结构,其中每个元素用一个节点进行存储,并通过next将所有节点串起来表示元素之间的线性关系。
设计一个节点类模板Node<T>,包含有节点的data值和下一个节点的指针next等私有数据成员和相关成员函数。
另设计一个线性表类模板List<T>,用于实现线性表的各种运算。
为了方便在List<T>中对Node<T>中的私有数据成员操作,将List<T>声明为Node<T>的友元类模板,因此需要对List<T>类模板进行前向引用声明。完整的程序如下:
程序执行结果如下:
初始化表L
表空
插入元素a,b,c,d
表不空
表L:a b c d
c的序号:3
在序号3处插入e,f
表L:a b f e c d
c的序号:5
序号3的元素:f
删除两个元素
表L:a b e d
销毁表
【例5.10】抽象数据类型栈的定义如下:
设计满足上述定义的Stack<T>类模板,并用相关数据对程序进行测试。(www.chuimin.cn)
解:对于栈采用不带头节点的单链表的链栈存储结构,其中每个元素用一个节点进行存储,并通过next将所有节点串起来表示元素之间的线性关系。
设计一个节点类模板Node<T>,包含有节点的data值和下一个节点的指针next等私有数据成员和相关成员函数。
另设计一个栈类模板Stack<T>,用于实现栈的各种运算。
为了方便在Stack<T>中对Node<T>中的私有数据成员操作,将Stack<T>声明为Node<T>的友元类模板,因此需要对Stack<T>类模板进行前向引用声明。完整的程序如下:
程序执行结果如下:
初始化栈s
栈空
进栈元素a,b,c,d
栈不空
栈顶元素:d
出栈次序:d c b a
销毁栈
【例5.11】抽象数据类型队列的定义如下:
设计Queue<T>类模板,并用相关数据对程序进行测试。
解:采用顺序队的存储结构,在初始化时创建一个大小为MaxSize的连续内存空间,用qu指向其起始位置,用front和rear分别指向队头和队尾位置。完整的程序如下:
程序执行结果如下:
初始化队列q
队空
进队a,b,c,d
队不空
所有元素出队:a b c d
销毁队列
有关C++程序设计基础教程的文章
编写一个程序,声明一个点类Point,实现点的偏移,==,!其中各个成员函数就是实现这种转换并完成相应的矩阵运算功能。程序的执行结果如下:A矩阵:123456B矩阵:123456C矩阵:142536A+B矩阵:2468 10 12A-B矩阵:000000A*C矩阵:14 3232 77虽然这种转换比较复杂,但解决了矩阵运算通用性问题。......
2023-11-07
类模板的成员函数被认为是函数模板,也称为类属函数。因此,当给出一个类模板的成员函数的定义时,必须遵循函数模板的定义。在类模板中,可以用类型参数名表示数据成员的类型,也可以表示成员函数返回值、形参和局部变量的类型。类模板定义中的类型参数可带默认值。说明以下类模板的功能。......
2023-11-07
图6.18类层次图程序如下:本程序的执行结果如下:圆桌属性数据:高度:0.6米桌面半径:0.5米面积:0.785平方米颜色:白色设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数,再由Person派生出工程师类Engineer,包含职称和专业私有数据成员以及相关的成员函数,然后由Leader和Engineer类派生出主任工程师类Chairman。......
2023-11-07
同样,类模板不能直接使用,必须先实例化为相应的模板类,定义该模板类的对象后才能使用。程序的一次执行如下:填充一个字符数组第1个数据:a↙第2个数据:b↙第3个数据:c↙第4个数据:d↙第5个数据:e↙数组的内容是:a b c d e填充一个双精度数组第1个数据:1.2↙第2个数据:5.6↙第3个数据:3.1↙数组的内容是:1.25.63.1图5.3类模板、模板类和对象之间的关系......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
类是一种用户自定义的数据类型,定义一个类,就是描述类名及其成员。“类名”是一个标识符,用于唯一标识一个类。分析以下声明MyClass类的组成。该类的描述如图2.1所示,其中大圆圈中列出的函数名均为公有函数名,小圆圈中列出的是所有数据成员。图2.1MyClass类描述注意:因为类是一种数据类型,在声明一个类时系统并不会为其分配内存空间,所以在定义类中的数据成员时,不能对其进行初始化。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
解:上述程序与例4.2程序的功能相同,只是在这里重载运算符有一个返回值,因此A++或++B的结果是一个整数值。程序的执行结果如下:n=7n=62.重载单目运算符“->”“->”运算符是成员访问运算符,这种一元运算符只能被重载为成员函数。......
2023-11-07
相关推荐