| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 770 人关注过本帖
标题:自己编写的一个向量线性表的程序,出现“遇到问题需要关闭”???
只看楼主 加入收藏
Jia_Jian
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-28
收藏
 问题点数:0 回复次数:0 
自己编写的一个向量线性表的程序,出现“遇到问题需要关闭”???
我自己写的一个程序,编译没有错误,但是运行完后会出现“Vector.h遇到问题需要关闭”,这是什么原因啊??
下面是头文件Vector.h
#include<iostream>
#define DefaultSize 100;
template<class T>
class Vector
{
    private:
        T * elements;
        int ArraySize,VectorLength;
    public:
        Vector(int sz);
        ~Vector(void){delete [] elements;}
        int GetLength(void){return VectorLength;};
        T Getnode(int i);
        int Find(T & x);
        bool Insert(T & x,int i);
        bool Remove(int i);
        void Intersection(T & Va,T & Vb);
        void Union(T & Va,T & Vb);
};


template<class T >
Vector<T>::Vector(int sz)
{
    if(sz<0)
    {
        cerr<<"input a right number,please "<<endl;
    }
    else {
        ArraySize = sz;
        elements = new T[ArraySize];
        VectorLength = 0;
    }
}



template<class T >
T Vector<T>::Getnode(int i)
{
    if( i<0 || i>VectorLength)
    {
        return NULL;
    }
    else
    {
        return  elements[i];
    }
}


template<class T>
int Vector<T>::Find(T & x)
{
    for(int i=0;i<VectorLength;i++)
    {
        if(elements[i] == x)
            return i;
    }
    return -1;
}


template<class T>
bool Vector<T>::Insert(T & x,int i)
{
    if(i<0 || i>VectorLength || VectorLength == ArraySize)
    {
        cerr<<"input a rigth number"<<endl;
        return false;

    }
    else
    {
        VectorLength++;
        for(int j = VectorLength-1;j>=i;j++)
        {
            elements[j] = elements[j-1];
        }
        elements[i] = x;
        return true;
    }
}


template<class T>
bool Vector<T>::Remove(int i)
{
    if(i<0 || i>VectorLength)
    {
        cerr<<"input  a right number "<<endl;
        return false ;
    }
    else
    {
        for(int j = i;j<VectorLength-1;j++)
        {
            elements[j] = elements[j+1];
        }
        VectorLength--;
        return true;
    }
}


template<class T>
void Vector<T>::Intersection(T & Va,T & Vb)
{
    int n = Va.GetLength();
    int m = Vb.GetLength();
    for(int i= 0;i<m;i++)
    {
        T x = Vb.Getnode(i);
        int k = Va.Find(x);
        if(k==-1)
        {
            Vb.Remove(i);
            m--;
        }
    }
}


template<class T>
void Vector<T>::Union(T & Va,T & Vb)
{
    int n = Va.GetLength();
    int m = Vb.GetLength();
    for(int i=0;i<m;i++)
    {
        T x = Vb.Getnode(i);
        int k= Va.Find(x);
        if(k==-1)
        {
            Va.Insert(x,n);
            n++;
        }
    }
}

下面是主程序main

#include<iostream>
#include"Vector.h"
using namespace std;
int main()
{
    int n,s,m;
    cout<<"请输入人数:";cin>>n;
    cout<<endl;
    cout<<"请输入从第几个人开始:";cin>>s;
    cout<<endl;
    cout<<"请输入报到何数为止:";cin>>m;
    cout<<endl;
    int k=1;
    Vector<int> P(n);
    for(int i=0;i<n;i++)
    {
        P.Insert(k,i);
        k++;
    }
    int sl=s;


    for(int j=n;j>=1;j++)
    {
        sl = (sl+m-1)%j;
        if(sl==0)sl=j;
        int w=P.Getnode(sl-1);
        P.Remove(sl-1);
        P.Insert(w,n-1);
    }
    int a;
    int b;
    for(b=0;b<n;b++)
    {
        a = P.Getnode(b);
        cout<<a<<"   ";
    }


        
    return 0;
}

这是有关数据结构的线性表的。。
搜索更多相关主题的帖子: 向量 线性 编写 
2008-05-07 23:21
快速回复:自己编写的一个向量线性表的程序,出现“遇到问题需要关闭”???
数据加载中...
 
   



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

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