| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:合并两个顺序表错误,运行时会弹出一个框,那是怎么回事
取消只看楼主 加入收藏
gpf
Rank: 2
等 级:论坛游民
帖 子:24
专家分:25
注 册:2013-11-12
结帖率:88.89%
收藏
 问题点数:0 回复次数:0 
合并两个顺序表错误,运行时会弹出一个框,那是怎么回事
#include<iostream.h>
class seplist
{
public:
    seplist();
    ~seplist(){ delete []data; }
    int find();//查找e在表中的位置
    int insert(int k,int x);//第k个位置插入x
    int sort();//奇数偶数,5
    int paixu();//排序
    int locate(int x);
    int get(int i){return (i<0||i>length)?NULL:data[i];}
    int Union(seplist A,seplist B);//合并两个顺序表
    int duichen()//函数是否对称
    {     
        cout<<"判断函数是否对称!"<<endl;
         int i=0;
         int m,flag=1;
         if(length%2!=0)
             cout<<"不对称!"<<endl;
         else
          {
              m=length/2;
              for(i=0;i<m;i++)
              {
                  if(data[i]=data[length-i-1])
                      continue;
                  else
                  {
                      flag=0;
                      break;
                  }

              }
              if(flag==1)
                  cout<<"是对称的!"<<endl;
              else if(flag==0)
                  cout<<"不对称!"<<endl;
         }
         return 0;
    }

    void CreateList()
    {   
        for( int i=0;i<length;i++)
            cin>>data[i];   //输入元素
    }     
    void Traverse()
    {    //顺序表的遍历
        int  i;
        for(i=0;i<length;i++)
        {
            cout<<data[i]<<" ";
        }
        cout<<endl;
    }
private:
    int *data;
    int length;
};
seplist::seplist()
{   
    cout<<"输入创建对象的长度!"<<endl;
    cin>>length;
    if(length>0)
    {
        data=new int[length];//申请动态空间
    }
}
int seplist::find()
{   
    cout<<"查找数组中的一个字符!"<<endl;
    int i=0;
    int e,j=-1;
    cout<<"输入要查找的字符!"<<endl;
         cin>>e;
     while(i<length)
     {
              if(e==data[i])
            {
                j=i;
                break;
            }
       i++;
     }
     if(j==-1)
         cout<<"no same!"<<endl;
     else if(j==i)
             cout<<"e="<<data[j]<<endl;
     return 0;
}
int seplist::insert(int k,int x)
{
    cout<<"插入之后!"<<endl;
    if (k<0 || k>length+1  )
        return 0;
    else    {
        length++;
        for(int j=length;j>k;j--)
            data[j]=data[j-1];
            data[k]=x;
            return 1;
    }
}
int seplist::sort()//奇数在前,偶数在后
{
    cout<<"寄偶交换!"<<endl;
    int i;int j;int t;
    for(j=0;j<length;j++)
        for(i=0;i<length-j-1;i++)
            if(data[i]%2==0&&data[i+1]%2!=0)
            {
                t=data[i];
                data[i]=data[i+1];
                data[i+1]=t;
            }
            return 0;
}
int seplist::paixu()
{
    cout<<"排序之后!"<<endl;
    int i;int j;int t;
    for(j=0;j<length;j++)
        for(i=0;i<length-j-1;i++)
            if(data[i]>data[i+1])
            {
                t=data[i];
                data[i]=data[i+1];
                data[i+1]=t;
            }
            return 0;
}
int seplist::locate(int x)
{
    int i=0;
    while(i<=length && data[i]!=x)
    {
        i++;
        if(i>length)
            return -1;
        else
            return i;
    }
    return 0;
}
int seplist::Union(seplist A,seplist B)
{
    int n=length;
    int m=length;
    for(int i=0;i<m;i++)
    {
        int x=B.get(i);
    int k=A.locate(x);
    if(k==-1)
    {
         A.insert(n+1,x);
         n++;
    }
    }
    return 0;
}

int main()
{
    cout<<"***************************"<<endl;
    cout<<"*                         *"<<endl;
    cout<<"*调           数! *"<<endl;
    cout<<"*                         *"<<endl;
    cout<<"***************************"<<endl;
    seplist a,b;
    a.CreateList();
    b.CreateList();
    a.Union(a,b);//调用合并函数,合并之后存放在a中
    a.Traverse();//
输出
    return 0;

}
搜索更多相关主题的帖子: include public insert 
2013-11-24 13:49
快速回复:合并两个顺序表错误,运行时会弹出一个框,那是怎么回事
数据加载中...
 
   



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

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