| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:帮帮忙看看这段代码有什么问题
只看楼主 加入收藏
adiu
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-5-24
收藏
 问题点数:0 回复次数:2 
帮帮忙看看这段代码有什么问题
#include<stdio.h>
struct student
{
   long num;
   char *name;
   char *sex;
   int age;
   struct student *nxet;
};
struct student *creat(void)
{
   struct student *head,*p1,*p2;
   printf("qing shu ru:\n");
   p2=p1=(struct student *)malloc(sizeof(struct student));
   scanf("%ld,%s,%s,%d",&p1->num,p1->name,p1->sex,&p1->age);
   head=NULL;
   while(p1->num!=0)
   {
      if(head==NULL)head=p1;
      else p2->nxet=p1;
      p2=p1;
      p1=(struct student *)malloc(sizeof(struct student));
      scanf("%ld,%s,%s,%d",&p1->num,p1->name,p1->sex,&p1->age);
   }
   p2->nxet=NULL;
   free(p1);
   return(head);
}
struct student *cut_del(struct student *head,long num)
{
   struct student *a,*b;
   a=head;
   while(a->num!=num)
   {
       b=a;
       a=a->nxet;
   }
   if(a==head)a=head->nxet;
   else b->nxet=a->nxet;
   return(a);

}
void print(struct student *a)
{
   struct student *p;
   p=a;
   while(p!=NULL)
   {
       printf("\n%ld;%s;%s;%d\n",p->num,p->name,p->sex,p->age);
       p=p->nxet;
   }
}
void main()
{
  struct student *a;
  long aa;
  a=creat();
  printf("\nqing shu ru num:");
  scanf("%ld",&aa);
  a=cut_del(a,aa);
  print(a);
  getch();
}
搜索更多相关主题的帖子: 代码 
2008-10-16 10:37
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
p2=p1=(struct student *)malloc(sizeof(struct student));
    scanf("%ld,%s,%s,%d",&p1->num,p1->name,p1->sex,&p1->age);
这里虽然给p2和p1分配的内存,但它们的成员name和sex没有分配内存空间,而scanf对字串的输入要求字串指针自己分配内存.这里的name和sex都是非法指针。

问题太多,非法指针、内存泄漏、逻辑也不正确,主要在creat函数中,建议删除,重新思考再写过。
2008-10-16 18:13
xinshou2008
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-10-16
收藏
得分:0 
看了给人有一种乱用指针。指针跟内存的打的交道多。在能不用指针的地方尽量不要用指针。你的编程目的就是想实现单链表的创建和删除单链表中的某一个节点。建议你可以看看数据结构书上的相应的代码。再次基础上再做修改!
2008-10-16 21:46
快速回复:帮帮忙看看这段代码有什么问题
数据加载中...
 
   



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

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