| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:谁能帮忙看下下面的代码错哪了
只看楼主 加入收藏
深海蓝
Rank: 2
来 自:广东湛江
等 级:论坛游民
帖 子:22
专家分:18
注 册:2013-3-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
谁能帮忙看下下面的代码错哪了
#include<stdio.h>
#include<stdlib.h>
main()
{
    struct film
    {int i;
    struct film *next;
        };//链表输入数据
    struct film *head,*last,*ptr;
    head=last=(struct film*) malloc(sizeof(struct film));
    int i;
    while(scanf("%d",&i))
    {
      ptr=(struct film*) malloc(sizeof(struct film));
      last->next=ptr;
      last=ptr;
      last->i=i;
    }//下面是查找链表中大于8的数删除;
    struct film *p,*f;
    p=head;
    f=head->next;
    while(f)
    { if(f->i>8)
    {if(f->next==NULL)
    {p->next=NULL;
    free(f);}
    else
    {p->next=f->next;
    free(f);}}
    p=f;
    f=f->next;
     }
     //下面是输出;
    ptr=head->next;
    while(ptr)
    {
        printf("%d",ptr->i);
        ptr=ptr->next;
    }//下面清空
    ptr=head;
    while(ptr)
    {ptr=head->next;
    free(head);
    head=ptr;
        
    }
   
  }
搜索更多相关主题的帖子: next include 
2013-03-07 20:37
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
在头部加入   #include   "stdafx.h"就可以了,给你个建议,以后写代码时注意工整性,方便检查

Maybe
2013-03-07 21:40
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
老实说,你的代码风格不行啊
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    struct film
    {
        int i;
        struct film *next;
    };
    
    //链表输入数据
    struct film *head, *last, *ptr;

    head = last = (struct film*) malloc(sizeof(struct film));

    int i;
    while(scanf("%d", &i))    //你不觉得这里会无限循环么
    {
        ptr = (struct film*) malloc(sizeof(struct film));
        last->next = ptr;
        last = ptr;
        last->i = i;
    }
    
    //下面是查找链表中大于8的数删除; 
    struct film *p,*f;
    p = head;
    f = head->next;
    while(f)
    { 
        if(f->i > 8)
        {
            if(f->next == NULL)
            {
                p->next = NULL;
                free(f);
            }
            else
            {
                p->next = f->next;
                free(f);
            }
        }
        p = f;
        f = f->next;
    } 

    //下面是输出; 
    ptr = head->next;
    while(ptr)
    {
        printf("%d", ptr->i);
        ptr = ptr->next;
    }
    
    //下面清空 
    ptr = head;
    while(ptr)
    {
        ptr = head->next;    //head是最后一个节点时,这句会报错的
        free(head);
        head = ptr;
    }
    return 0;
}


[fly]存在即是合理[/fly]
2013-03-07 21:46
深海蓝
Rank: 2
来 自:广东湛江
等 级:论坛游民
帖 子:22
专家分:18
注 册:2013-3-7
收藏
得分:0 
没有,不是这样,你们看看查找删除那部分,应该是那里错了,不要那部分的话就可以正常输入输出的
2013-03-07 22:13
深海蓝
Rank: 2
来 自:广东湛江
等 级:论坛游民
帖 子:22
专家分:18
注 册:2013-3-7
收藏
得分:0 
哎,高手,出来个好不好
2013-03-07 22:38
waja
Rank: 2
等 级:论坛游民
帖 子:53
专家分:52
注 册:2012-7-27
收藏
得分:10 
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct film{
    int i;
    struct film *next;
        };//链表输入数据
main()
{

    struct film *head,*last,*ptr;
    head=last=(struct film*)malloc(sizeof(struct film));
    int i;
    scanf("%d",&i);
    while(1)//修改了循环条件
    {
      ptr=(struct film*)malloc(sizeof(struct film));
      last->next=ptr;
      last=ptr;
      last->i=i;
      scanf("%d",&i);
      if (i==0)
          break;
    }//下面是查找链表中大于8的数删除;
    last->next=NULL;//你主要是这句没有


    struct film *p,*f;
    p=head;
    f=head->next;
    while(f!=NULL)
    {
        if(f->i>8)
   
        {
            if(f->next==NULL)
   
            {
                p->next=NULL;
   
                free(f);
                break;
               
            }
        
        
            else
   
            {
                p->next=f->next;

                free(f);
            }
            f = p->next;
        }
        else
        {
            p = f;
            f = f->next;
        }


   
   
    }
     //下面是输出;
    ptr=head->next;
    while(ptr)
    {
        printf("%d/t",ptr->i);
        ptr=ptr->next;
    }//下面清空
    ptr=head;
    while(ptr)
    {
        ptr=head->next;
   
        free(head);
   
        head=ptr;
        
    }
    return 0;
  }

[ 本帖最后由 waja 于 2013-3-7 23:26 编辑 ]
2013-03-07 23:24
深海蓝
Rank: 2
来 自:广东湛江
等 级:论坛游民
帖 子:22
专家分:18
注 册:2013-3-7
收藏
得分:0 
恩恩,是这样,感谢
2013-03-07 23:38
快速回复:谁能帮忙看下下面的代码错哪了
数据加载中...
 
   



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

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