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

按您的意思改,那最后一个字母能被检测到吗?
p是p!=NULL;的缩写。


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

按您的意思改,那最后一个字母能被检测到吗?
p是p!=NULL;的缩写。不懂,具体说说?怎么指针是语句的缩写?


2006-08-23 18:03
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
int p = 5;

if (p) // equal if (p != 0)
// code...
else
// code..

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-08-23 18:10
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

如论坛所说。
您把指针看成数值就能理解了.
#define NULL 0


对不礼貌的女生收钱......
2006-08-23 19:00
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)
{
if(p->data==ch)
break;
i++;
}
if(p) return i;
else return 0; //用返回0表示查找不到。
}

我运行过了,你的for语句不执行
和我的代码相同:
int list_postion(LNODE * L,char m)
{
LINKLIST p;
int i=0;
p=L;
p=L->next ;

while(p!=NULL)
{i++;
if(p->data!=m)break;
p=p->next;
}
if(i=0)
printf("hasnot data.");
}
else
return i;
}
全部为错误;


2006-08-24 10:15
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

那你原来的程序就有问题,
您看下这个吧,我简单写了个:
#include "Stdio.h"
#include "Conio.h"
#include "stdlib.h"
typedef struct node
{
char data;
struct node *next;
}LNODE;
LNODE* creat(LNODE* head);
void print(LNODE* head);
void Free(LNODE *head);
int ist_postion(LNODE *head,char ch);
int main(void)
{
LNODE *head=NULL;
head=creat(head);
print(head);
printf("%d",ist_postion(head,'b'));
Free(head);
getch();
return 0;
}
LNODE * creat(LNODE *head)
{
LNODE *p=NULL,*q=NULL;
char ch=getchar();
while(ch!='#')
{
p=(LNODE *)malloc(sizeof(LNODE));
if(p==NULL)exit(0);
p->data=ch;
p->next=NULL;
if(!head)
{
q=head=p;
}
else
{
q->next=p;
q=p;
}
ch=getchar();
}
return head;
}
void print(LNODE* head)
{
LNODE* p=head;
while(p)
{
putchar(p->data);
p=p->next;
}
}
void Free(LNODE *head)
{
LNODE *p=NULL;
while(head)
{
p=head;
head=head->next;
free(p);
}
}
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;
}


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

2006-08-24 10:39
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

那个表头写在主函数或者函数中都是无所谓的。
写在主函数中,就传个参数。
写在其他函数中,是可以省掉。

[此贴子已经被作者于2006-8-24 11:01:16编辑过]


对不礼貌的女生收钱......
2006-08-24 11:00
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
int ist_postion(LNODE *head,char ch)
{
int i=1;
while(head&&head->data!=ch&&(head=head->next,i++)) ;
return head?i:0;
}

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-08-24 11:03
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

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



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

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