标题:连接失败
只看楼主
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
结帖率:93.75%
 问题点数:0 回复次数:3 
连接失败
谁帮我看看上面代码哪里错了
向一个链表(head为头结点指针)追加3个节点,到了第二次就在while循环了,是怎么回事?
struct STR *p1,*q1,*q2;
    int flag;
    for(i=0;i<3;i++)   
    {    p1=(struct STR*)malloc(sizeof(struct STR));
        memcpy(p1->str,str,strlen(str));
        p1->next=NULL;
        q1=q2=head;
        flag=0;
        while(1)
        {
            printf("111\n");
            if(q1==NULL)
            {
                if(flag==0)
                {
                    head=p1;
                }
                else
                {
                    q2->next=p1;
                }
                p1=p1->next;
                break;
            }
            else
            {
                flag++;
                q2=q1;
                q1=q1->next;
            }
        }
    }
谁帮我看看上面代码哪里错了
向一个链表(head为头结点指针)追加3个节点,到了第二次就在while循环了,是怎么回事?
搜索更多相关主题的帖子: next 
2012-11-27 00:42
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
得分:0 
问题在最后一个else体内

我要成为嘿嘿的黑客,替天行道
2012-11-27 07:49
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
在while处死循环?
造成死循环的原因无非两种,跳出循环的条件不出来或者跳出循环的代码得不到执行(其实都一样啊,呵呵),你的代码里跳出while循环只能通过break;那么造成死循环的原因就是q1一直不等于NULL。
while体内能让q1发生变化的只有q1=q1->next;
最后我在网上找到一句话“(空指针和指向空的指针)是不同的,空指针是没有放内容的指针,而指向空的指针内存已经被占用只不过存储的内容为空”。



我就一打酱油的。。。。。。。。。。。。。
所以说错勿怪

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-27 13:53
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
解决了,谢谢各位

小小战士,战士中的战斗机!
2012-12-02 18:08



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




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

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