| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 853 人关注过本帖
标题:这个哪出错了 编译没错运行不对
只看楼主 加入收藏
asdf562
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
这个哪出错了 编译没错运行不对
编写一个程序,建立一个单向链表,每个结点包括:学号、姓名、成绩。建立链表时若输入成绩为负数就结束。然后输入一个学号,如果链表中有学号等于此输入学号的结点,则将其删除。
#include<stdio.h>
#include<stdlib.h>

struct stu
{
    long num;
    char name[20];
    int score;
}type[5];

struct node
{
    struct stu type[5];
    struct node *next;
}st[5],*p,*q;

int delete_node(struct node *h,int x)
{
    q=h;p=h->next;
    if((p!='\0')&&(p->type->num!=x))
    {
        while((p!='\0')&&(p->type->num!=x))
        {
            q=p;p=p->next;
        }
        if(p->type->num==x)
        {
            q->next=p->next;
            free(p);
        }
    }
    return 0;
}

int main(void)
{

    int i;
    long x;
    for(i=0;i<5;i++)
    {
        scanf("%ld",&st[i].type[i].num);
        scanf("%s",st[i].type[i].name);
        scanf("%d",st[i].type[i].score);
        if(st[i].type[i].score<0)
            break;
    }
    scanf("%ld",&x);
    for(i=0;i<5;i++)
    {
        printf("%ld\t",st->type[i].num);
        printf("%s\t",st->type[i].name);
        printf("%d\t",st->type[i].score);
    }
    printf("\n");
    delete_node(st,&x);
    for(i=0;i<4;i++)
    {
        printf("%ld\t",st[i].type[i].num);
        printf("%s\t",st[i].type[i].name);
        printf("%d\t",st[i].type[i].score);
    }
    return 0;

}
搜索更多相关主题的帖子: next include 
2013-04-20 22:19
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:20 
你链表创建的不对
你5个学生的信息都没有串联起来
2013-04-20 22:33
asdf562
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-20
收藏
得分:0 
回复 2楼 wdd119
怎么串啊 可以麻烦写一下正确的么?谢谢
2013-04-20 22:34
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:0 
你这样还不如直接用数组实现呢
2013-04-20 22:35
asdf562
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-20
收藏
得分:0 
回复 4楼 wdd119
老师留的作业 数组的话我就会了
这是结构体那的 有点蒙
2013-04-20 22:38
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:0 
#include<stdio.h>
 #include<stdlib.h>

 struct stu
 {
     int num;
     char name[20];
     int score;
    struct stu *next;//加指针
 };

 int delete_node(struct node *h,int x)
 {
     q=h;p=h->next;
     if((p!='\0')&&(p->type->num!=x))
     {
         while((p!='\0')&&(p->type->num!=x))
         {
             q=p;p=p->next;
         }
         if(p->type->num==x)
         {
             q->next=p->next;
             free(p);
         }
     }
     return 0;
 }

 int main(void)
 {

     struct stu *head,*Head;
    struct stu st;
      

         scanf("%ld",p.num);
         scanf("%s",p.name);
         scanf("%d",p.score);
         *head=p;//先给头指针附值
        Head=head;
           struct stu q;
        int i;
        for(i=0;i<3;i++)
    {
        scanf("%ld",p.num);
         scanf("%s",p.name);
         scanf("%d",p.score);
    Head->next=&q;
    Head=Head->next;
    }//这样就包括头指针总共建立了5个学生的信息
        scanf("%ld",p.num);
         scanf("%s",p.name);
         scanf("%d",p.score);
    Head->next=&q;
    Head->next=NULL;
            

     
     
   
     while(Head->next!=NULL)
    {
        printf("%d%s%d",Head->num,Head->name,Head->score);
        Head=Head->next;
    }
     return 0;

 }

[ 本帖最后由 wdd119 于 2013-4-20 23:00 编辑 ]
2013-04-20 22:42
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:0 
结构体力要有指针next用以指向下一个节点


通过 head->next=*p 串联
2013-04-20 22:44
asdf562
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-4-20
收藏
得分:0 
太感谢了 。。。。。呵呵 十分感谢
2013-04-20 22:45
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:0 
有什么不懂详细问
2013-04-20 22:57
wdd119
Rank: 2
等 级:论坛游民
帖 子:10
专家分:29
注 册:2012-11-12
收藏
得分:0 
你上大学吗 学这个
2013-04-20 22:58
快速回复:这个哪出错了 编译没错运行不对
数据加载中...
 
   



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

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