标题:关于链表出现debug assertion failed
只看楼主
小散
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2009-6-26
 问题点数:0 回复次数:0 
关于链表出现debug assertion failed
这是个关于链表的问题  
将两个链表(结点中data(int类型)从小到大排列)合并成一个data从大到小排列的新链表 各结点的地址不改变
我是定义了一个拷贝构造函数做的
代码如下  输出正常  但是有错误警告出现 debug assertion failed
求高人解答

#include <iostream.h>
struct Node
{
    int data;
    Node *next;
};
class LinkList
{   
        Node *first;   
    public:
        LinkList(){first=new Node;first->next=NULL;}
        LinkList(int a[],int n);
        LinkList(LinkList &m1,LinkList &n1);
        ~LinkList();
        int Length();
        int Get(int i);
        int Locate(int x);
        void Insert(int i,int x);
        int Delete(int i);
        void PrintList();
};
LinkList::LinkList(int a[],int n)
{
    first=new Node;
    Node *r=first;
    for(int i=0;i<n;i++)
    {
        Node *s=new Node;s->data=a[i];
        r->next=s;r=s;
    }
    r->next=NULL;
}
LinkList::LinkList(LinkList &m1,LinkList &n1)
{
    first=new Node;
    first->next=NULL;
    Node *p1=first;
    Node *pm=m1.first->next,*pn=n1.first->next,*s;
    while(pm||pn)
    {
        if(pm&&pn&&pm->data<=pn->data||!pn)
        {
        s=pm;pm=pm->next;
        }
        else
        {
        s=pn;pn=pn->next;
        }
        s->next=p1->next;
        p1->next=s;
    }
}
LinkList::~LinkList()
{
    Node *p=first;
    while(p)
    {
        Node *q=p;
        p=p->next;
        delete q;
    }
}
int LinkList::Length()
{
    Node *p=first->next;
    int j=1;
    while(p)
    {
        p=p->next;
        j++;
    }
    return j;
}
int LinkList::Get(int i)
{
    Node *p=first->next;
    int j=1;
    while(p&&j<i)
    {
        p=p->next;
        j++;
    }
    if(!p)throw"位置";
        else return p->data;
}
int LinkList::Locate(int x)
{
    Node *p=first->next;
    int j=1;
    while(p->data!=x)
    {
        p=p->next;
        j++;
    }
    if(!p)throw"位置";
    return j;
}
void LinkList::Insert(int i,int x)
{
    Node *p=first;
    int j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p)throw"位置";
    else
    {
        Node *s=new Node;s->data=x;
        s->next=p->next;
        p->next=s;
    }
}
int LinkList::Delete(int i)
{
    Node *p=first;
    int j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p||!p->next)throw"位置";
    else
    {
        Node *q=p->next;int x=q->data;
        p->next=q->next;
        delete q;
        return x;
    }
}
void LinkList::PrintList()
{
    Node *p=first->next;
    while(p)
    {
        cout<<p->data<<endl;
        p=p->next;
    }
    cout<<'\n'<<"完成"<<endl;
}
void main()
{
    int a[6]={1,2,3,4,5,6},b[7]={7,12,14,23,24,35,43};
    LinkList m(a,6),n(b,7);
    LinkList p(m,n);
    p.PrintList();
}
搜索更多相关主题的帖子: failed debug assertion 链表 
2009-09-25 12:21



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




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

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