关于一个引用的一个小问题
问题一:
void Genlist::push(Genlistnode &x)//将一个包含值x的元素加入到广义表的最前面
{
if(first->tlink==NULL) first->tlink = x;//其中first是Genlistnode *型的 是个指针类型,tlink也是这种类型的
else
{
x->tlink=first->tlink;
first->tlink=x;
}
}
我的疑问就是:这个push函数的形参是个Genlistnode型的引用,而不是Genlistnode *指针型的引用
所以first->tlink = x; 这个语句复制号左右不是一个类型的啊 左边是指针型的 而右边不是 ,那这句话是书上写错了还是确实可以这么写 为什么?
问题二:
Genlist & Genlist::Addon(Genlist & list,Genlistnode &x)//返回一个以x为头,list为尾的新表
{
Genlist newlist = new Genlist;
newlist.first =copy(list.first);
x->tlink = newlist.first->tlink;
newlist.fist->tlink = x;
return newlist;
}
我的疑问:
Genlist newlist = new Genlist;这句话不是申请一个动态空间吗 我感觉这么写才对:Genlist *newlist = new Genlist;
其中newlist应该是一个Genlist *指针型的 所以后面都要相应变化
newlist.fist->tlink = x;这句里面和第一个问题一样tlink是一个指针 而x只是Genlistnode类型的一个引用
就这两个问题 麻烦各位了