⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seqlist.h

📁 是一本教程的实例代码,可以下载后直接运行,即可以得到答案.
💻 H
字号:
#include <iostream.h>
class SeqList                          //顺序表类
{
  private:
    int *table;                        //指向数组的指针
    int size;                          //顺序表的数组容量
    int len;                           //顺序表的实际长度
  public:
    SeqList(int n=0);                  //构造函数 
    ~SeqList(void);                    //析构函数 
    bool isEmpty()const;               //判断顺序表是否为空
    bool isFull()const;                //判断顺序表是否已满   
    int length()const;                 //返回顺序表的实际长度    
    int get(int i)const;               //返回第i个数据元素值
    bool set(int i,int k);             //设置第i个数据元素值为k
    bool insert(int i,int k);          //插入k值作为第i个数据元素
    bool insert(int k);                //将k值添加到顺序表最后,函数重载
    int search(int k);                 //返回k值首次出现的位置
    bool remove(int k);                //删除k值首次出现的数据元素
    void output();                     //按实际长度输出顺序表的数据元素
    bool create(int n);                //顺序表中添加n个自然数
};

SeqList::SeqList(int n)                //构造函数,初始化顺序表
{
    table=new int[n];                  //为顺序表分配n个存储单元
    size=n;
    len=0;                             //此时顺序表实际长度为0
}
SeqList::~SeqList(void)                //析构函数,撤销顺序表对象
{
    delete []table;
}
bool SeqList::isEmpty()const           //判断顺序表是否为空
{
    return len==0;
}
bool SeqList::isFull()const            //判断顺序表是否已满   
{
    return len>=size;
}
int SeqList::length()const             //返回顺序表的实际长度    
{
    return len;
}
int SeqList::get(int i)const           //返回第i个数据元素值
{
    if(i>0 && i<=len)
        return table[i-1];
    else
        return -1;
}
bool SeqList::set(int i,int k)         //设置第i个数据元素值为k
{
    if(i>0 && i<=len+1)
    {
        table[i-1]=k;
		return true;
	}
	else
		return false;
}

bool SeqList::insert(int i,int k)      //插入k值作为第i个数据元素
{
    if(!isFull())
    {
        if(i<=0)  i=1;
        if(i>len) i=len+1; 
        for(int j=len-1;j>=i-1;j--)     //向后移动元素
            table[j+1]=table[j];
        table[i-1]=k;                   //插入元素
        len++;                          //长度加1
        return true;                    //插入成功
    }
    else
    {
        cerr<<"顺序表已满,无法插入"<<k<<"值!\n";
        return false;                   //插入失败
    }    
}

bool SeqList::insert(int k)             //将k值添加到顺序表最后,函数重载
{
    return insert(length()+1,k); 
}

int SeqList::search(int k)              //查找,返回k值首次出现的位置
{                                       //未找到时,返回0
    int i=1;
    while(i<=length() && get(i)!=k)
        i++;
    if(i<=length())
        return i;
    else
        return 0;
}
bool SeqList::remove(int k)             //删除k值首次出现的数据元素
{
    if (!isEmpty())
    {
        int i=search(k);                //第i个结点
        for(int j=i;j<length();j++)     //向前移动数据元素
            set(j,get(j+1));            //即table[j]=table[j+1];
        len--;                          //长度减1
        return true;
    }
    else
    {
		cout<<"顺序表为空,无法删除值!\n";
        return false;
    }
}

void SeqList::output()                  //按实际长度输出顺序表的数据元素
{
    for(int i=1;i<=length();i++)
        cout<<get(i)<<"  ";
    cout<<"\n";
}

bool SeqList::create(int n)            //顺序表中添加n个自然数
{
    if(n<=size)
    {
        int i=0;
        while(i<n && insert(i+1))
            i++;
        return true;
    }
    else 
        return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -