C++基础之顺序表(9.20)

main.cpp

#include <iostream>
#include"seqlist.h"
using namespace std;

int main()
{
    Seqlist prt;
    prt.Seqlist_init(5);
    prt.empty();


    prt.push_back(3);
    prt.push_back(5);
    prt.push_back(1);
    prt.push_back(7);
    prt.show();
    cout<<"********任意位置插入*********"<<endl;
    prt.insert(3,9);
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    cout<<"********任意位置删除*********"<<endl;
    prt.erase(1);
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    cout<<"********任意位置删除*********"<<endl;
    prt.pop_back();
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    cout<<"********获取任意位置元素(读写)*********"<<endl;
    cout<<"at ="<<prt.at(3)<<endl;
    prt.at(3)=10;
    cout<<"at ="<<prt.at(3)<<endl;
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    cout<<"********降序*********"<<endl;
    prt.push_back(1);
    prt.push_back(7);
    prt.sort(0);
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    cout<<"********升序*********"<<endl;
    prt.sort(1);
    cout<<"顺序表长度:"<<prt.size_t()<<endl;
    prt.show();
    cout<<endl;

    prt.full();
    return 0;
}

seqlist.cpp 

#include "seqlist.h"

void Seqlist::Seqlist_init(int n)
{
    per = new int[n];
    len=0;
    size=n;
}

bool Seqlist::emp()
{
    return len==0;
}
void Seqlist::empty()
{
    if(emp()!=0)
    {
        cout<<"顺序表为空"<<endl;
    }
}

bool Seqlist::ful()
{
    return len==size&&size!=0;
}
void Seqlist::full()
{
    if(ful()==1)
    {
        cout<<"顺序表已满"<<endl;
    }
}
//尾插法
void Seqlist::push_back(int Data)
{
    if(len>=size)
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    per[len]=Data;
    len++;
    return;
}
//任意位置插入
void Seqlist::insert(int por,int Data)
{
    if(len>=size)
    {
        cout<<"顺序表已满"<<endl;
        return;
    }
    if(len>por)
    {
        for(int i=len-1;i>=por-1;i--)
        {
            per[i+1]=per[i];
        }
        per[por-1]=Data;
        len++;
    }
    else
    {
        //        per[len]=Data;
        //        len++;
        Seqlist::push_back(Data);
    }
    return;
}
// 任意位置删除
void Seqlist::erase(int por)
{
    if(len==0)
    {
        cout<<"顺序表为空"<<endl;
        return;
    }
    if(len<por)
    {
        cout<<"该位置无信息"<<endl;
    }
    else
    {
        for(int i=por-1;i<len;i++)
        {
            per[i]=per[i+1];
        }
        len--;
    }
    return;
}
//尾删
void Seqlist::pop_back()
{
    per[len]=0;
    len--;
    return ;
}
//求长度
int Seqlist::size_t()
{
    return len;
}

//获取任意位置元素
int &Seqlist::at(int por)
{
    return per[por-1];
}
//排序
void Seqlist::sort(bool flag)
{
    for(int i=1;i<len;i++)
    {
        int j;
        for(j=0;j<len-i;j++)
        {
            if(flag==0)
            {
                if(per[j]<per[j+1])
                {
                    int temp=per[j];
                    per[j]=per[j+1];
                    per[j+1]=temp ;
                }
            }
            else
            {
                if(per[j]>per[j+1])
                {
                    int temp=per[j];
                    per[j]=per[j+1];
                    per[j+1]=temp ;
                }
            }

        }
    }
    return;
}
//输出表内容
void Seqlist::show()
{
    cout<<"顺序表内容:"<<endl;
    for(int i=0;i<len;i++)
    {
        cout<<per[i]<<" ";
    }
}

seqlist.h 

#ifndef SEQLIST_H
#define SEQLIST_H
#include<iostream>

using namespace std;

class Seqlist
{
private:
    int *per;
    int len;
    int size;
public:
    //初始化
    void Seqlist_init(int n);
    //判空
    bool emp();
    void empty();
    //判满
    bool ful();
    void full();
    //尾插
    void push_back(int Data);
    //任意位置插入
    void insert(int por,int Data);
    //任意位置删除
    void erase(int por);
    //尾删
    void pop_back();
    //求长度
    int size_t();
    //获取任意位置元素
    int &at(int por);
    //排序
    void sort(bool flag);
    //数据表打印
    void show();
};

#endif // SEQLIST_H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值