标题:C语言单链表访问冲突求指教-谢谢~
只看楼主
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
结帖率:100%
已结贴  问题点数:20 回复次数:20 
C语言单链表访问冲突求指教-谢谢~
程序运行过程中要有菜单提示,菜单如下:
*************************************************************
*    1.Insert a student                        *
*    2.Delete a student                        *
*    3.Display the link list                            *
*    4.Display excellent students                *
*    5.Search a student by the name                *
*    6.Display the average score of three courses        *
*    0.Exit the program                        *
*************************************************************

“Insert a student”:插入一个学生记录,要求按平均分从高到低插入
“Delete a student”:删除指定学号的学生
“Display the link list”:输出单链表中所有学生的信息
“Display excellent students”:输出链表中三门功课平均成绩高于85分(含85分)的学生信息
“Search a student by the name”:根据输入的姓名,输出链表中相应学生的信息
“Display the average score of three courses”:输出链表中所有学生的高数平均分、英语平均分以及C语言平均分
“Exit the program”:销毁单链表,结束程序运行
搞定了,还是把代码删了吧


求大神教我怎么样在单链表中进行排序,降序排序

[此贴子已经被作者于2016-6-8 11:16编辑过]

搜索更多相关主题的帖子: average C语言 
2016-06-07 21:55
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>
void sort(struct student *head)//排序
{
    int i, j;
    struct student temp;
    for (i = 0; i < m; i++)
        for (j = 0; j < m - i; j++)
            if (head[j].avg < head[j + 1].avg)
            {
                temp = head[j];
                head[j] = head[j + 1];
                head[j + 1] = temp;
            }
}

排序之后,指针域应该如何变换

[此贴子已经被作者于2016-6-8 11:19编辑过]

2016-06-07 22:06
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
好像是冒泡排序那错了  是不是?  换了之后指针域不连续 直接崩溃了?
2016-06-07 23:25
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:0 
涉及到链表操作的函数参数都要用二级指针

未佩好剑,转身便已是江湖
2016-06-07 23:37
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 4楼 alice_usnet
什么意思?  是**p么?  但是 我们没学到这个二级指针  一级可以么?
2016-06-07 23:41
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
有很多错误,改了好多,现在我想问问如果要排序的话,他的指针域需要怎么变换?降序排列?~
2016-06-07 23:42
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:0 
好像说错了,因为有头结点

未佩好剑,转身便已是江湖
2016-06-07 23:44
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
贴那么多代码上来,代码是自己写的吗?
2016-06-07 23:48
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:0 
程序代码:
void sort(struct student *head)//排序
{
    int i, j;
    struct student temp;
    for (i = 0; i < m; i++)
        for (j = 0; j < m - i-1; j++)
            if (head[j].avg < head[j + 1].avg)
            {
                temp = head[j];
                head[j] = head[j + 1];
                head[j + 1] = temp;
            }
}

程序代码:
void delete_node(struct student *head, char ch[8])//删除指定结点
{
    struct student *p, *t;
    p = head;
    if (p->next == NULL)
        printf("kk\n");//为了检查当单链表为空时能否进入子函数
    while (p->next != NULL)
    {
        if (strcmp(p->next->sno,ch)==0)
        {
            t = p->next;
            p->next = t->next;
            free(t);
            t = NULL;
        }
        else
            p = p->next;
    }
    
}

程序代码:
void destroy(struct student *head)//摧毁单链表
{
    struct student *px=head,*tmp;
    while (px!= NULL)
    {
        tmp=px->next;
        printf("Deleting the student %s ...\n", px->sno);
        free(px);
        px=tmp;
    }
}

未佩好剑,转身便已是江湖
2016-06-07 23:57
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:0 
其他的没看

未佩好剑,转身便已是江湖
2016-06-07 23:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465708-1-1.html




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

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