| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 578 人关注过本帖
标题:链表问题操作。。。速求解
只看楼主 加入收藏
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
链表问题操作。。。速求解
每次输入学生资料后,程序就直接退出了。不知道什么原因。。。。。。求解
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define CHEN struct student
#define FEI sizeof(struct student)
struct student
{
    int age;
    char *name;
    char *sex;
    struct student *next;
};
CHEN *creat(int n)
{
    CHEN *head,*q,*p;
    int i;
    for(i=0;i<n;i++)
    p=(CHEN *)malloc(FEI);
    printf("请输入学生的资料!\n");
    scanf("%d,%s,%s",&p->age,p->name,p->sex);
        if(head==NULL)
        {
            head=q=p;
        }
        else
        {
            q->next=p;
            p->next=NULL;
            q=p;
        }
        return(head);
}
CHEN *insert(CHEN *head,CHEN *j)
{
    CHEN *q,*p;
    q=head;
    if(head==NULL)
    {
        j=head;
        j->next=NULL;
    }
    else
    {
        while((j->age>q->age)&&(q->next!=NULL))
        {
            if(j->age>q->age)
            {
                j->next=p;
                q->next=j;
                q=j;
            }
        }
    }
    return(head);
}
void print(CHEN *head)
{
    printf("学生资料如下\n");
    printf("age\t\tname\t\tsex\n");
    while(head!=NULL)
    {
        printf("%d\t\t%s\t\t%s\n",&head->age,head->name,head->sex);
        head=head->next;
    }
}
void main()
{
    CHEN *head,*o;
    int n,f;
    printf("请输入结点个数\n!");
    scanf("%d",&n);
    head=creat(n);
    print(head);
    printf("请输入新学生的资料\n");
    o=(CHEN *)malloc(FEI);
    scanf("%d,%s,%s",&o->age,o->name,o->sex);
    head=insert(head,o);
    print(head);
}
搜索更多相关主题的帖子: include 资料 
2011-04-03 16:33
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
收藏
得分:0 
大神啊 。。。。快啦啊  。。。。。。急急急
2011-04-03 16:50
右手边
Rank: 2
等 级:论坛游民
帖 子:3
专家分:21
注 册:2011-3-29
收藏
得分:5 
你在函数定义里面定义的指针head , q , p没有赋地址值,程序不知道它们具体指向哪个内存空间!
2011-04-03 18:39
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
收藏
得分:0 
怎么改。。。帮忙改一下
2011-04-03 19:00
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:5 
student 里的 name 和 sex 都是指针,你在使用的时候,这两个指针没有指向任何内存空间,

一种修改方法是 把 name 和 sex 都改成数组,可能还有其它方法,我再想想
2011-04-03 19:09
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:0 
不好意思,我自己按我自己的方法的改了下,好像不行,再看看
2011-04-03 19:11
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
收藏
得分:0 
额~~   你慢慢想。我也想想、想到了 记得告诉我哟
2011-04-03 19:20
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:0 
哦,name 和 sex 的空间给了,next 又是没指向任何空间,,
next 在没有指向的时候,可以先赋值为 NULL;

你先自己改吧,看得我头疼
2011-04-03 19:22
bccn250
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:379
注 册:2010-5-25
收藏
得分:0 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define CHEN struct student
#define FEI sizeof(struct student)
struct student
{
    int age;
    char name[50];    //这里改成数组,
    char sex[50];    //这里同上
    struct student *next;
};
CHEN *creat(int n)
{
    CHEN *head,*q,*p;
    head=q=p=NULL;    //这里赋值NULL
    int i;
    for(i=0;i<n;i++)
    {                    //for循环加的括号
        p=(CHEN *)malloc(FEI);
        printf("请输入学生的资料!\n");
        scanf("%d,%s,%s",&p->age,p->name,p->sex);  //这里我不知道该怎么弄,我是改成 %d%s%s 然后我在输入资料的时候是用空格隔开的
        if(head==NULL)
        {
            head=q=p;
        }
        else
        {
            q->next=p;
            p->next=NULL;
            q=p;
        }
    }                //for循环的另外一个括号
        return(head);
}
CHEN *insert(CHEN *head,CHEN *j)
{
    CHEN *q,*p;
    q=head;
    if(head==NULL)
    {
        j=head;
        j->next=NULL;
    }
    else
    {
        while((j->age>q->age)&&(q->next!=NULL))
        {
            if(j->age>q->age)
            {
                j->next=p;
                q->next=j;
                q=j;
            }
        }
    }
    return(head);
}
void print(CHEN *head)
{
    printf("学生资料如下\n");
    printf("age\t\tname\t\tsex\n");
    while(head!=NULL)
    {
        printf("%d\t\t%s\t\t%s\n",head->age,head->name,head->sex);
        head=head->next;
    }
}
void main()
{
    CHEN *head,*o;
    int n,f;
    printf("请输入结点个数\n!");
    scanf("%d",&n);
    head=creat(n);
    print(head);
    printf("请输入新学生的资料\n");
    o=(CHEN *)malloc(FEI);
    scanf("%d,%s,%s",&o->age,o->name,o->sex);
    head=insert(head,o);
    print(head);
}
2011-04-03 19:40
卡其
Rank: 2
等 级:论坛游民
帖 子:96
专家分:36
注 册:2010-8-30
收藏
得分:0 
还是不能编译、、唉。。。搞郁闷咯
2011-04-03 21:30
快速回复:链表问题操作。。。速求解
数据加载中...
 
   



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

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