大家来看一下,高级程序员书到的这段代码是不是有问题

luoqing 2003-08-29 12:42:19
在高级程序员书到的第384页
struct intNode * inNode(void)
{int d;struct intNode *p;
printf("输入插入表元的值");
scanf("%d",&d);
p=(struct intNode *)malloc(sizeof(struct intNode));
p->value=d;
p->next=head;//就是这名话是不是有问题
//应该还有这句head=p;
return p;
}
这是线性表的内容;
还有在383页的
struct intNode * createList()
的这句好像也有问题:else tail=tail->next=p;
不知道我说得对不对,但我在这里看了很久都看不懂
...全文
68 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jug 2003-10-10
  • 打赏
  • 举报
回复

八皇后没有错
但它的几个工作数组的长度好像为N+1也可以
76ersjy2 2003-08-30
  • 打赏
  • 举报
回复
大伙看看八皇后的那题有没错!
luoqing 2003-08-30
  • 打赏
  • 举报
回复
else tail=tail->next这一句没有错
chinalin0 2003-08-30
  • 打赏
  • 举报
回复
你问的两个问题,原书是没有错的.
第一个,p->next=head;是将p结点插在表表上,此时,p为表头结点.
return p;此句返回表关结点,
从后面的函数调节用就可以看出,(调用语句为head=function();)
在函数调用过程中, 头指针,暂存于p中,执行head=function()后,头指针又保存在head中.
第二个问题:
tail=tail->next=p;
些语句等价于(至少在效果上等价于)
tail->next=p; 将结点阵字库p结点边入链表尾部.
tail=tail->next; tail移到链表最后一个结点.
mare 2003-08-30
  • 打赏
  • 举报
回复
本书没有错
doubleC 2003-08-30
  • 打赏
  • 举报
回复
支持楼上的问题
p插入前: head(node0)--->node1--->node2--->...-->NULL

p插入后:p-->head--->node1--->node2....--->NULL

如果是象上面的解释的话,当再插入一个新结点的时候,p->next 将会指向P而并非所谓的头结点head,这样是否是只为只能插入一个结点设计呢(后面有一个返回语句return p;)?
第二个问题与楼上意见相同
bobble 2003-08-30
  • 打赏
  • 举报
回复
1):

p插入前: head(node0)--->node1--->node2--->...-->NULL

p插入后:p-->head--->node1--->node2....--->NULL

2):

else tail=tail->next=p;//p插入tail->next所指的内存空间,并置p为tail节点
bobble 2003-08-30
  • 打赏
  • 举报
回复
如果节点插到头的话,而没有head=p,我想试问,头节点在哪里?是指向谁?
是指向原来的节点还是指向现在这个新加的节点??
-------头节点就是新加的节点p啊,其指向原来的head
luoqing 2003-08-29
  • 打赏
  • 举报
回复
else tail=tail->next=p这句话没错,我只觉得它做了无用功,tail=tail->next会影响到本函数以外的程式吗?
luoqing 2003-08-29
  • 打赏
  • 举报
回复
如果节点插到头的话,而没有head=p,我想试问,头节点在哪里?是指向谁?
是指向原来的节点还是指向现在这个新加的节点??
sunxuyuan 2003-08-29
  • 打赏
  • 举报
回复
是的,没错!!!!!
liushaoyi 2003-08-29
  • 打赏
  • 举报
回复
我哇,你西下的
noyah1024 2003-08-29
  • 打赏
  • 举报
回复
不好意思,没错,再考虑一下
JAMES001 2003-08-29
  • 打赏
  • 举报
回复
1. p->next=head;//就是这名话是不是有问题
//应该还有这句head=p;

我想,你跟我以前一样,犯了个 想当然 的错误

那你说这句错在哪呢?
把该结点插入头结点,何以会错?

2. tail=tail->next=p;
该结点插入尾结点
这又错在哪呢?

2,948

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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