写一个点的结构体,实现为点赋值、输出、比较两个点是否相等三个操作

发布网友 发布时间:2022-04-24 13:45

我来回答

2个回答

热心网友 时间:2023-10-15 00:04

问题好乱!
一、getnext、setnext
这两个函数再明白不过了,设计者在类package中定义了一个package* pnext;用来指向链表的下一个元素,getnext就是要取得下一个元素,自然返回该指针,setnext就是要给当前元素指定其下一个元素的地址,自然是给pnext赋值。

二、在创建第一个package对象时,pnext初始化为0,那么在创建第二个package对象时,第一个package对象中的pnext是如何指向它的(不是已经初始化为0了么?)?
看这段代码:
package* ppackage= new package(pBox);

if (pHead)
pTail->setnext(ppackage);

先创建第二个package对象,然后pTail->setnext(ppackage);
注意pTail永远指向链表的最后一个对象,因此pTail->setnext(ppackage);的意思是将第二个对象是放在了第一个对象的pnext中,也就将第一个对象和第二个对象链接起来了。

三、若把当次创建的package对象的地址ppackage赋予给pnext,那么pnext 不是指向刚刚创建的对象了么?好像并没有指向下一个package对象啊?
正如上面所说,setnext是把刚刚创建的对象放到当前链表最后一个元素的pnext成员里,在此之前,刚刚创建的对象还不在链表中,链表的最后一个元素是上次创建的那个。

四、还有到最后,如何使pnext为0?
你也说了,pnext在package创建的时候就赋值为0的,因此不需要再给最后一个package的pnext赋值0。

热心网友 时间:2023-10-15 00:04

#include <iostream.h>

struct MyPoint{
float x;
float y;
void Init(float a,float b)
{
x=a;
y=b;
}
void show()
{
cout<<"改点坐标为("<<x<<","<<y<<")\n";
}
};

void main()
{
cout<<"hello"<<endl;
MyPoint a,b;
a.Init(1.0,2.0);
b.Init(2.0,1.0); //赋值
a.show();
b.show(); //输出
cout<<a.x<<endl;
if a.x==b.x && a.y==b.y //比较
cout<<"两点相等\n";
else
cout<<"两点不相等\n";
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com