| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 527 人关注过本帖
标题:关于结构体指针删除问题
只看楼主 加入收藏
G梦
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-12-27
结帖率:88.89%
收藏
 问题点数:0 回复次数:2 
关于结构体指针删除问题
PS2.4.zip (1.22 MB)

程序代码:
void Cancle(LinkList &l)
    {
        ClientInfo *CI=new ClientInfo;
        ClientInfo *p=new ClientInfo;
        ClientInfo *q=new ClientInfo;
        CI=l.cFirst->next;
        int CardNum;
        char*PlaneNum=new char;
        cout<<"===========退票============"<<endl;
        cout<<"请输入您的证件号:";
        cin>>CardNum;
        while(1)
        {
            if(CI->CardNum!=CardNum&&CI!=NULL)
            {
                CI=CI->next;
            }
            if(CI==NULL)
            {
                cout<<"证件号输入有误,请重新输入:";
                CI=l.cFirst->next;
                cin>>CardNum;
            }
            else
            {
                break;
            }
        }
        cout<<"您的所有订单信息如下:"<<endl;
        /*@@@显示该客户所有订单信息@@@*/
        while(CI!=NULL)
        {
            if(CI->CardNum==CardNum)
            {    
                cout<<"======================="<<endl;
                cout<<"姓名:    "<<CI->name<<endl;
                cout<<"订单号:  "<<CI->OrderNum<<endl;
                cout<<"证件号:  "<<CI->CardNum<<endl;
                cout<<"航班号:  "<<CI->PlaneNum<<endl;
                cout<<"======================="<<endl;
                CI=CI->next;
            }
            else
            {
                CI=CI->next;
            }
           
        }
        CI=l.cFirst->next;
        cout<<"请输入您想要退票的航班号:";
        fflush(stdin);
        gets(PlaneNum);
        while(1)
        {
            if(strcmp(CI->PlaneNum,PlaneNum)!=0&&CI!=NULL)
            {
                CI=CI->next;
            }
            if(CI==NULL)
            {
                cout<<"航班号输入有误,请重新输入:";
                CI=l.cFirst->next;
                fflush(stdin);
                gets(PlaneNum);
            }
            else
            {
                break;
            }
        }
        //销毁结点
        q=CI=l.cFirst->next;
        while(strcmp(CI->PlaneNum,PlaneNum)!=0&&CI!=NULL)
        {
            p=CI;
            CI=CI->next;
        }
        if(strcmp(CI->PlaneNum,PlaneNum)==0)
        {
        
                p->next=CI->next;
                delete CI;
                CI=NULL;
                cout<<"退票成功!";
        
        }
        ofstream fout("航班预订情况.txt");
        if(!fout)
        {
            cout<<"文件打开失败!";
            exit(-1);
        }
        while(q!=NULL)
        {
            cout<<"111";
            cout<<q->PlaneNum;
            cout<<"222";
            fout<<q->PlaneNum<<" ";
            fout<<q->name<<" "<<q->OrderNum<<" "<<endl;
            q=q->next;
        }
        fout.close();
    
    }

源程序已经上传,主要出现问题的就是我贴的一个cancle()退票函数,删除一个结点指针后为什么不能正确写入文件了啊,楼主表示自己都快调崩溃了,就是发现不了问题,求大神相助
搜索更多相关主题的帖子: 结构体 
2014-09-04 15:27
G梦
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-12-27
收藏
得分:0 
那个什么cout<<"1111";cout<<"222";的请自动忽略掉,是我自己测试用的
2014-09-04 15:28
G梦
Rank: 1
等 级:新手上路
帖 子:48
专家分:7
注 册:2012-12-27
收藏
得分:0 
肿么没人回复==,不过楼主表示刚刚解决了,现在把解决方案写出来给大家参考参考,也给自己提个醒:
        原来问题出在标示要删除的CI指针的前一个指针p上,原来一开始就没给它初始化,导致p指针虽然链接上了后面的指针,但是当删除的是除头指针外的第一个结点时,头指针并没能连接上p指针,最终导致程序异常终止
        问题虽然解决了,但还是欢迎大家继续来讨论~
2014-09-04 17:34
快速回复:关于结构体指针删除问题
数据加载中...
 
   



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

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