关于C++语言指针->运用的不通处

大风吹屁屁 2011-09-16 05:48:49
我在学习数据结构的时候,看不懂链表的实现过程中关于指针->的运用,一直想不通,请高手指点下,具体如下。

关键形参: link, first, next. 表达式为 next = first -> link;就是这句看不懂表达什么意思 具体定义为:
//链表的类定义

template <clsaa T>
class ChainNode
{
friend Chain<T>;
private:
T data;
ChainNode<T> *link;
};


template<class T>
class Chain
{
Chain(){first = 0;}
~Chain();
private:
ChainNode<T> * first;
};

template<class T>
Chain<T> :: ~Chain()
{
ChainNode<T> * next;
while(first)
{
next = first -> link;
delete first;
first = next;
}
}
...全文
53 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大风吹屁屁 2011-09-16
  • 打赏
  • 举报
回复
来了点感觉,正在看书研究中,压力大。链表的使用和声明想着还是有些别扭
大风吹屁屁 2011-09-16
  • 打赏
  • 举报
回复
可不可以把ChainNode<T> *link,当做生成了一个名为link的指针对象???

意思是在
class ChainNode
{
friend Chain<T>;
private:
T data;
ChainNode<T> *link;
};
这个类定义好后。ChainNode<T> *link 这句能看成 声明一个link的指针对象吗?
那我如果声明一个同类的ChainNode对象,如 ChainNode<int > A;
那么A.link ->link->link ->link->link ->link不就成了link里面永远有个link吗?
Happy_ZhangXv 2011-09-16
  • 打赏
  • 举报
回复
这样的定义下,那么定义中的link指针中是不是也包含着一个data和link?

是的 这个结点的link又可以用->访问下个结点的 date和link



可不可以把ChainNode<T> *link,当做生成了一个名为link的指针对象???

这句我没理解清楚你的意思
生成结点是再分配内存 生成的 其实计算机也不知道是什么类型的 只是分配的时候正好分配一个结点那么大的内存,然后把这个新的结点的内存地址,告诉上一个结点的link
大风吹屁屁 2011-09-16
  • 打赏
  • 举报
回复
看懂了点,至少看明白了 next = first -> link是什么意思,但又有新的问题就是
class ChainNode
{
friend Chain<T>;
private:
T data;
ChainNode<T> *link;
};
这样的定义下,那么定义中的link指针中是不是也包含着一个data和link?可不可以把ChainNode<T>*link,当做生成了一个名为link的指针对象???
Happy_ZhangXv 2011-09-16
  • 打赏
  • 举报
回复
没看代码 next应该是,下一个链表单元的地址
一个链表单元 应该至少有2个元素 数据 和next单元的地址
大风吹屁屁 2011-09-16
  • 打赏
  • 举报
回复
那 next = first -> link; 中 next是等于什么?它的值是什么?
就想叫yoko 2011-09-16
  • 打赏
  • 举报
回复
普通变量访问成员用 .
指针变量访问成员用 ->

至于指针与指针之间的赋值
其实也跟变量之间的赋值
就是让他们指向同一位置

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧