我尝试将.txt文件中的唯一字词复制到链接列表中。我需要复制每一个独特的单词而不重复。我写了一个程序,但我的功能有问题,检查列表中是否已存在该单词。下面是代码段,它从文件中读取单词,如果尚未添加,则将单词添加到链接列表中。
FILE*fd;
fd=fopen("c:\\texto.txt","r");
while(!feof(fd))
{
fscanf(fd,"%s",aux);
if(check(&lista,aux)==1){
add(&lista,aux);}
}
我对check
函数的想法是:检查我从文件中获得的实际单词是否与链接列表中当前节点中已有的单词相同。如果当前节点中不存在,请转到下一个节点。如果函数发现该单词已经在列表中,则返回0.如果函数到达链表的末尾,则返回1,以便main可以将该单词添加到链表中。
int check (t_nodo*lista, char*aux)
{
if((*lista)!=NULL&&strcmp(((*lista)->word,aux))!=0)
{
check(&(*lista)->next,aux);
}
if((((*lista)->word,aux))==0)
{
return 0;
}
if((*lista)==NULL)
{
return 1;
}
}//el tano se la come a mordiscones
实际上,程序只将第一个单词复制到列表中。然后它将所有其他节点的单词设置为与第一个单词相同。我已经检查过"添加"功能,没关系。
答案 0 :(得分:3)
你在列表中更深入但没有返回值。修正:
## three-dimensional case:
a3 <- c(0,0,2)
b3 <- c(1,0,0)
c3 <- c(2,3,1)
d3 <- dist3d(a3,b3,c3) # distance of point a from line (b,c) in 3D
#> d3
#[1] 2.215647
还要考虑使用while循环而不是递归。