weixin_46030360 2020-03-24 22:12
浏览 1698

Process returned -1073741819 (0xC0000005),运行不出结果,头疼。初学C。

#include
#include
using namespace std;
typedef struct linkednode
{
int data[2];
struct linkednode *next;
} snode,*ptr;
int main()
{

ptr creat();

ptr add_n(ptr ha,ptr hb);

ptr p=NULL,q=NULL;
cout<<"请按照次数递增输入次数与系数"<<endl;
p=creat( );
q=creat( );
cout<<"111"<<endl;
while(p->next!=NULL)
{
    cout<<p->data[0]<<" "<<p->data[1]<<"%%";
    p=p->next;
}
while(q->next!=NULL)
{
    cout<<q->data[0]<<" "<<q->data[1]<<"%%";
    q=q->next;
}
p=add_n(p,q);
while(p->next!=NULL)
{
    cout<<p->data[0]<<" "<<p->data[1]<<"%%";
    p=p->next;
}
free(p);
free(q);
return 0;

}
ptr creat( )
{
ptr a=NULL,head=NULL,tail=NULL;
int x,c,i;
char flag='T';
tail=(ptr)malloc(sizeof(snode));
head=tail;

for( i=0;; i++)
{
    cout<<"请输入次数"<<endl;
    cin>>c;
    cout<<"请输入系数"<<endl;
    cin>>x;
    a=(ptr)malloc(sizeof(snode));
    tail->next=a;

    tail->data[0]=c;
    tail->data[1]=x;
    tail=a;
    cout<<"请选择是否继续输入,T为继续,F为终止"<<endl;
    cin>>flag;
    if(flag=='F')
        break;


}
tail->next=NULL;
free(tail);
free(a);
return head;

}
ptr add_n(ptr ha,ptr hb)
{
ptr p,q,last_p,pre_q;
int val;
p=ha->next;
q=hb->next;
last_p=ha;
pre_q=hb;

while(p!=ha && q!=hb)
{
    if(p->data[0]>q->data[0])
        {
            pre_q->next=q->next;
            last_p->next=q;
            q->next=p;
            last_p=last_p->next;
            q=pre_q->next;

        }
        else
        {
            if(p->data[0]<q->data[0]) //第二种情况
            {
                last_p=p;
                p=p->next;
            }
            else   //第三种,指数相同的合并
            {
                val=p->data[1]+q->data[1];
                if(val!=0)//插入一个,删除一个
                {
                    p->data[1]=val;
                    pre_q->next=q->next;
                    free(q);
                    last_p=p;
                    p=p->next;
                    q=pre_q->next;
                }
                else//删除系数相加后为0的结点
                {
                    last_p->next=p->next;
                    pre_q->next=q->next;
                    free(p);
                    free(q);
                    p=last_p->next;
                    q=pre_q->next;
                }
            }
        }
    if(q!=hb)   //插入hb中剩余的链表
    {
        last_p->next=q;
        while (q->next!=hb)
            q=q->next;
        q->next=p;
    }
    free(hb);//释放hb表头监督元

}
return ha;

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 luckysheet
    • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
    • ¥15 找一位技术过硬的游戏pj程序员
    • ¥15 matlab生成电测深三层曲线模型代码
    • ¥50 随机森林与房贷信用风险模型
    • ¥50 buildozer打包kivy app失败
    • ¥30 在vs2022里运行python代码
    • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
    • ¥15 求解 yolo算法问题
    • ¥15 虚拟机打包apk出现错误