一个菜鸟的细节问题

turbosky 2009-03-07 07:14:15
template <typename T>
bool LinkList<T>::Delete(int i, T& e)
{ // // 在第i位置删除元素并存入e
LNode<T> *h, *q;
if(i<1 || i>length) return false; // i值不合法
Locate(i-1, h);
q=h->next;
h->next=q->next;
e=q->data; delete q;
length--;
if(!h->next) tail=h;
return true;
}

其中,红色标记的我很不解。

既然q是指针,岂不是应该写成e=(*p)->data?
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengde007 2009-03-07
  • 打赏
  • 举报
回复
q->data;与data.data;前者是间接成员,后者是直接成员。
lq651659889 2009-03-07
  • 打赏
  • 举报
回复
都说清楚了啊
sagegz 2009-03-07
  • 打赏
  • 举报
回复
两种成员访问操作符:点和箭头.
这里e=q->data;与e = (*q).data;等价
看来LZ指针还是没搞清楚.
比如说int *ptr =0;这里*是类型标识符号,ptr才是指针.
(*ptr)才识是指针所指的对象.
zhkefa 2009-03-07
  • 打赏
  • 举报
回复
->是指针操作符。
pengzhixi 2009-03-07
  • 打赏
  • 举报
回复
看你这个函数的功能应该是删除data为e的节点。
wxgiter 2009-03-07
  • 打赏
  • 举报
回复
要写成e=q->data,或e=(*q).data 就行,书上有讲的。
pengzhixi 2009-03-07
  • 打赏
  • 举报
回复
楼主注意两个运算符的区别,“.”运算符的左边是一个类对象,->运算符号的左边是一个指向对象的指针。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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