标题:C语言单链表访问冲突求指教-谢谢~
只看楼主
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 8楼 吹水佬
当然是自己写的啦。。。
2016-06-08 00:21
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 10楼 alice_usnet
谢谢 我现在已经自己改好了 好多错误。。前面的代码可不可以删掉啊?  好丢人。。= = !
是冒泡排序出的问题  已经知道了 但是我现在就是不知道如果这样排序不对的话  需要怎么样进行降序排序?
还有其他的子函数也有点问题  我增加了库函数  #include<string.h> 用strcmp();来进行比较是否相同

现在基本搞定了  把冒泡注解掉 之后  程序运行没问题,功能也对。
大神会不会排序呢?教教我吧?
2016-06-08 00:25
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:0 
带那这么长。插入数据那个函数链表指向可能不对,导致崩溃了。另外排序也不对,链表有头节点,从头节点开始检索。。。楼主再好好研究罗。。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-06-08 07:48
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 13楼 lanke711
嗯嗯,上面那些的确有很多错误不过现在已经基本改好了,程序可以跑了。
就差排序了,会排序么?可以教教我么?
2016-06-08 08:51
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 10楼 alice_usnet
可以教教我如何进行排序么?
2016-06-08 11:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 14楼 黑布林
            if (head[j].avg < head[j + 1].avg)
            {
                temp = head[j];
                head[j] = head[j + 1];
                head[j + 1] = temp;
            }
你是想按avg排序,怎又按head[j]换位?不是按avg换位?
2016-06-08 11:17
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:20 
程序代码:
void sort(struct student *head)//排序
{
    int i, j;
    struct student *tmp;
    struct student *p=head->next,*prev=head;
    for (i = 0; i < m-1; i++)
        for (j=0; j<m-i-1;p=p->next)
        {
            
            if (p->avg < p->next->avg)
            {
                tmp=p->next;
                p->next=tmp->next;
                tmp->next=p;
                prev->next=tmp;
                p=tmp;
            }
            prev=prev->next;
        }
}

未佩好剑,转身便已是江湖
2016-06-08 12:57
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:0 
struct student *sort(struct student *head)
{
    struct student *p,*p1,*p2,*p3;
    struct student h, t;
    if (head == NULL) return NULL;
    h.next=head;
    p=&h;
    while (p->next!=NULL)
    {
        p=p->next;
    }
    p=p->next=&t;
    while (p!=h.next)
    {
        p3=&h;
        p1=p3->next;
        p2=p1->next;
        while (p2!=p)
        {
            if ((p1->num)>(p2->num))
            {
                p1->next=p2->next;
                p2->next=p1;
                p3->next=p2;

                p3=p2;
                p2=p1->next;

            } else {
                p3=p1;
                p1=p2;
                p2=p2->next;
            }
        }
        p=p1;
    }
    while (p->next!=&t)
    {
        p=p->next;
    }
    p->next=NULL;
    return h.next;
}
这是我原来在网上看到的一个从小到大的排序写法,思路不错,看看能不能帮到你。
2016-06-08 15:03
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 17楼 alice_usnet
懂了,谢谢~
2016-06-08 21:33
黑布林
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-6-7
得分:0 
回复 18楼 linlulu001
好的,谢谢~
2016-06-08 21:33



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




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

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