| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 283 人关注过本帖
标题:C一个关于链表的改错题目!
取消只看楼主 加入收藏
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
结帖率:100%
收藏
 问题点数:0 回复次数:1 
C一个关于链表的改错题目!
2.程序修改题  
给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include  <stdio.h>
#include  <stdlib.h>
typedef struct aa
{int data;  struct aa*next;}NODE;
int fun(NODE*h)
{
  int sum=0;
  NODE *p;
/***********found**********/
  p=h;
  while(p)
  {
    if(p->data%2==0)
    sum+=p->data;
/***********found**********/
    p=h->next;
  }
  return  sum;
}
NODE *creatlink(int n)
{
  NODE *h,*p,*s,*q;
  int I,x;
  h=p=(NODE *)malloc(sizeof(NODE));
  for(I=1;I<=n;I++)
  {
    s=(NODE*)malloc(sizeof(NODE));
    s->data=rand()%16;
    s->next=p->next;
    p->next=s;
    p=p->next;
  }
  p->next=NULL;
  return h;
}
outlink(NODE *h,FILE *pf)
{
  NODE *p;
  p=h->next;
  fprintf(pf,"THE LIST :\n HEAD");
  while(p)
  {
    fprintf(pf,"->%d",p->data);
    p=p->next;
  }
  fprintf(pf,"\n");
}
outresult(int s,FILE *pf)
{
  fprintf(pf,"The sum of even numbers  :
           %d\n",s);
}
main()
{
  NODE *head;  int even;
  head=creatlink(12);
  head->data=9000;
  outlink(head,stdout);
  even=fun(head);
  printf("The  result  :\n");
  outresult(even, stdout);
}

(1)将p=h; 改为:p= h->next;    求解释?  和C语言书上学的差别太大了
(2)将p=h->next; 改为:p=p->next
搜索更多相关主题的帖子: include 
2011-09-07 20:42
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
收藏
得分:0 
回复 2楼 nonomeiyou
谢谢
2011-09-07 22:31
快速回复:C一个关于链表的改错题目!
数据加载中...
 
   



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

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