| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:顺序输出学生信息(单链表实现)(虽然能顺序输出但最后却释放了所有的节点 ...
取消只看楼主 加入收藏
维海
Rank: 2
等 级:论坛游民
帖 子:23
专家分:53
注 册:2010-11-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
顺序输出学生信息(单链表实现)(虽然能顺序输出但最后却释放了所有的节点)
#include <stdio.h>
#include <stdlib.h>

struct student
{
    char number[20];
    char name[10];
    float score1;
    float score2;
    float score3;
    float average;

    struct student *next;
}node;
typedef struct student jie;
void view(jie *q,int num)
{
    printf("%s %s %.2f %.2f %.2f %.2f %d\n",q->number,q->name,q->score1,q->score2,q->score3,q->average,num);
}
void print(jie *p,int n)
{
    jie *q1,*q2,*f,*bef;
    int k=1;
    int num=0;
    while(k<n)
    {
        f=q1=p;
        q2=p->next;
        while(q2!=NULL)
        {
            if(q2->average>f->average)
            {
                bef=q1;
                f=q2;
            }
            q1=q2;
            q2=q1->next;
        }
        if(f==p)
        {

            view(f,++num);
            k++;
            p=p->next;
            free(f);//释放f而不能释放p,p现在已经指向了新的节头点;
        }
        else
        {
            bef->next=f->next;//注意f的释放,让他的前一个节点后驱指针指向他的下一个址
            view(f,++num);
            k++;
            free(f);
        }
    }
    view(p,++num);
}
jie* creat(int n)
{
    jie *head,*q1,*q2;
    head=q2=q1=NULL;
    int i;

    for(i=0;i<n;i++)
    {
       q1=(jie*)malloc(sizeof(jie));
       scanf("%s %s %f %f %f",q1->number,q1->name,&q1->score1,&q1->score2,&q1->score3);
       q1->average=(q1->score1+q1->score2+q1->score3)/3;

       if(head==NULL)
       {
           head=q2=q1;
       }
       else
       {
          q2->next=q1;
          q2=q1;
       }
    }
    q1->next=NULL;
    return head;

}
int main()
{
    jie *p;
    int n;
    scanf("%d",&n);
    p=creat(n);
    print(p,n);
    return 0;
}
搜索更多相关主题的帖子: 信息 average include number print 
2011-03-19 17:48
维海
Rank: 2
等 级:论坛游民
帖 子:23
专家分:53
注 册:2010-11-25
收藏
得分:0 
怎么能够实现就地给链表选择排序呢
2011-03-19 17:50
维海
Rank: 2
等 级:论坛游民
帖 子:23
专家分:53
注 册:2010-11-25
收藏
得分:0 
刚想出来,再申请一个头指针,(即相当于把要释放的指针读给他就可以了)放到新链表里就可以了
2011-03-22 13:34
快速回复:顺序输出学生信息(单链表实现)(虽然能顺序输出但最后却释放了所有的 ...
数据加载中...
 
   



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

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