| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1561 人关注过本帖
标题:[求助]查找链表节点编号的函数问题?
只看楼主 加入收藏
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:25 
[求助]查找链表节点编号的函数问题?

查找链表节点编号的函数如下
typedef struct node
{
char data;
struct node * next;
}LNODE;
int ist_postion(LNODE *L,char m) //L为链表指针,m为要找的值
{
LNODE * p;
int i=0;
p=L;
while((p->data!=m)&&(p->next!=NULL))
{
i++;
p=p->next;
}
if(i=0||(p->data!=m))
printf("表中无此数据");
else

return i;
}
不知我的函数对不对,运行时出现错误的编号,不知错在那里?请指教

搜索更多相关主题的帖子: 链表 节点 函数 
2006-08-22 22:03
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

if(i==0||p->data!=m);
而且您这个函数在检验字母的位置也有问题,如果是链表第一个字母就是您想要查询的第一个字母,您的程序仍会执行printf("表中无此数据");
另外,您的这个函数有时候没有返回值,这虽然是允许的,但不规范,
int ist_postion(LNODE *head,char ch)
{
LNODE *p=head;
int i=1;
for(;p;p=p->next)
{
if(p->data==ch)
break;
i++;
}
if(p) return i;
else return 0; //用返回0表示查找不到。
}


对不礼貌的女生收钱......
2006-08-23 09:17
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-23 09:38
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
把第一個 return 寫在 if 之後取代 break 可以嗎?

int ist_position(LNODE *head, char ch)
{
int i = 1;
LNODE *p = head
while(p)
{
if(p->data == ch) return i;
p = p->next;
i++;
}
return i;
}

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 09:40
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-23 09:48
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
不是吧, 它說 0 表示沒有找到啊...
如果第一個找到了 i 也應該是 1 吧

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 09:55
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-23 10:27
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

是的, 是 return 0;

我的意思是想把 第一個 return 移到 break 處...

打得太順手了


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-23 10:49
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

回复穆扬:
是我说错了。
回复yeshirow:
什么时候return是可以的,只是为了模块化把return写到一起而已。


对不礼貌的女生收钱......
2006-08-23 14:59
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
以下是引用soft_wind在2006-8-23 9:17:57的发言:

if(i==0||p->data!=m);
而且您这个函数在检验字母的位置也有问题,如果是链表第一个字母就是您想要查询的第一个字母,您的程序仍会执行printf("表中无此数据");
另外,您的这个函数有时候没有返回值,这虽然是允许的,但不规范,
int ist_postion(LNODE *head,char ch)
{
LNODE *p=head;
int i=1;
for(;p;p=p->next) 问题:指针p能作为循环条件吗?它的值是不确定的,
{ 是不是应该为:p->next !=NULL
if(p->data==ch)
break;
i++;
}
if(p) return i;
else return 0; //用返回0表示查找不到。
}

[此贴子已经被作者于2006-8-23 17:38:19编辑过]


2006-08-23 17:36
快速回复:[求助]查找链表节点编号的函数问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017851 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved