| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:请各位高手帮我看看这个程序
只看楼主 加入收藏
youyuanjia
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:5 
请各位高手帮我看看这个程序
请各位高手帮我看看这个程序.
建立一个链表,每个结点包括:学号,姓名,性别,年龄.输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去.
#include "stdio.h"
#include "conio.h"
#define len sizeof(struct student)
#define Null 0

struct student
{
 int num;
 char name[10];
 char sex;
 int age;
 struct student *next;
 };
 int n;
struct student *creat(void)
{
 struct student *head;
 struct student *p1,*p2;
 n=0;
 p1=p2=(struct student *)malloc(len);
 scanf("%d,%s,%c,%d",&p1->num,p1->name,&p1->sex,&p1->age);
 head=Null;
 while(p1->num!=0)
 {
  n=n+1;
 if(n==1)head=p1;
 else p2->next=p1;
 p2=p1;
 p1=(struct student *)malloc(len);
 scanf("%d,%s,%c,%d",&p1->num,p1->name,&p1->sex,&p1->age);
 }
 p2->next=Null;
 return (head);
 }

 void print(struct student *head)
 {
  struct student *p;
  p=head;
  if(head!=Null)
  do{
  printf("%d,%s,%c,%d\n",p->num,p->name,p->sex,p->age);
  p=p->next;
  }while(p!=Null);
  }
struct student *del(struct student *head,int Age)
{
 struct student *p1,*p2;
 p1=p2=head;
 if(p1->next==Null)
   if(p1->age==Age)head=Null;
   else
     printf("no find!");
 else
   while(p1->next!=Null)
    {
      if(p1->age==Age)
       {
        if(p1==head)
          head=p1->next;
        else
          p2->next=p1->next;
        p1=p2->next;
        }
      else
       {p2=p1;p1=p1->next;}
    }}
main()
{   int age;
    struct student *head;
    head=creat();
    print(head);
    printf("input a age:");
    scanf("%d",&age);
    head=del(head,age);
    print(head);
    getch();
}
不知道问题出在哪里?
搜索更多相关主题的帖子: include 姓名 
2010-04-08 22:52
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
先说说你有什么问题

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2010-04-08 23:16
liyang04300
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2010-3-17
收藏
得分:0 
但是程序能够编译成功呀,就是没输出结果!看不懂!
2010-04-09 08:41
youyuanjia
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
回复 2楼 随心
del函数的功能实现不了.
2010-04-09 10:11
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
收藏
得分:20 
楼主,
粗略的看了一下
我发现两个问题
首先,你的函数中用到了 malloc()
     但你的头文件中没有其头文件#include "stdlib.h"
还有,struct student *del(struct student *head,int Age)
    这个函数 你本来定义的就要还回student类型的数据
    但你最后并没有return 语句
下面是我修改过的程序
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define len sizeof(struct student)
#define Null 0

struct student
{
     int num;
     char name[10];
     char sex;
     int age;
     struct student *next;
};

int n;

struct student *creat(void)
{
     struct student *head;
     struct student *p1,*p2;
     n=0;
     p1=p2=(struct student *)malloc(len);
     scanf("%d,%s,%c,%d",&p1->num,p1->name,&p1->sex,&p1->age);
     head=Null;
     while(p1->num!=0)
     {
        
         n=n+1;
         if(n==1)
             head=p1;
         else
             p2->next=p1;
         p2=p1;
         p1=(struct student *)malloc(len);
         scanf("%d,%s,%c,%d",&p1->num,p1->name,&p1->sex,&p1->age);
     }
     p2->next=Null;
     return (head);
}

void print(struct student *head)
{
  
    struct student *p;
    p=head;
    if(head!=Null)
    do{
    printf("%d,%s,%c,%d\n",p->num,p->name,p->sex,p->age);
    p=p->next;
    }while(p!=Null);
}


struct student *del(struct student *head,int Age)
{
   
    struct student *p1,*p2;
    p1=p2=head;
    if(p1->next==Null)
   
       if(p1->age==Age)
           head=Null;
   
       else
           printf("no find!");
    else
   
       while(p1->next!=Null)
       {
     
           if(p1->age==Age)
           {
        
               if(p1==head)
         
                   head=p1->next;
           
               else
         
                   p2->next=p1->next;
        
               p1=p2->next;
           }
      
           else
      
           {p2=p1;p1=p1->next;}
   
       }
       return head;
}


int main()
{   
    int age;
    struct student *head;

    head=creat();
    print(head);
    printf("input a age:");
    scanf("%d",&age);
    head=del(head,age);
    print(head);
    getch();
    return 0;
}

 这个程序基本能运行
另外,写程序希望能写点注释


2010-04-09 13:08
youyuanjia
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-9-19
收藏
得分:0 
回复 5楼 亚小南
谢谢啦
2010-04-12 14:33
快速回复:请各位高手帮我看看这个程序
数据加载中...
 
   



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

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