# include <stdio.h>
# include <stdlib.h>
struct node
{
char lettle[20];/* 定义结构体 */
int amount;
struct node *next;
} ;
struct node *add(struct node *head,char a[],int x)/* 添加链表 */
{
struct node *p;
static struct node *q;
int i=0;
p=(struct node *)malloc(sizeof(struct node));
p->amount=x; p->next=0;
for(i=0;i<=x;i++)
p->lettle[i]=a[i];
if (head==0) head=q=p;
else { q->next=p ; q=q->next;}
return(*head);
}
void print(struct node *head) /* 求最长的字符串.并打印 */
{
struct node *k,*l;
if (head==0){ printf("there is nothing"); return;}
l=head;
k=head->next;
while(k==0)
{ if ((l->amount)<(k->amount))
l=k;
k=k->next;
}
printf("\n%s,%d",l->lettle,l->amount) ;
return;
}
main()
{
char words[100],a[20];
struct node *head=0;
int i=0,j,m,n,x,count;
gets(words);/* 得到字符串 */
while(words[i]!='\0')
{
if(words[i]==' ')/* 以空格为隔字符 */
count=0;
else {
count=1;m=i;}/* m为 单词的第一个字符的位置 */
if (count=1)
{for(j=i;words[j]!='\0';j++)
{ if(words[j]==' ')
{i=j-1; n=j ; break; }/* 记n为 单词的最后一个字符,应该是最后一个字符+1 */
n=j; }
for(x=0;m<=n;m++,x++)
a[x]=words[m] ;/* 把这个单词赋给 a */
a[x]='\0';
head=add(head,a,x); }/* 添加到链表中 */
i++;
}
print(head);/* 打印 */
getch();
}
我通过编译..但运行后出错..算法应该没问题..哪的毛病呢~~大家来找找.
斑竹..帮忙弄弄~~~~~
改了一下..现在输入一个单词 可以计算出长度..可以碰上 空格 就没反映了..怎么回事~~
[此贴子已经被作者于2006-3-31 18:55:37编辑过]