2024.9.20 c++

手动封装一个顺序表(SeqList),分文件编译实现

有私有成员:顺序表数组的起始地址 ptr、 顺序表的总长度:size、顺序表的实际长度:len

成员函数:初始化 init(int n)

判空:empty

判满:full

尾插:push_back

插入:insert(int index)

任意位置删除:erase(int index)

尾删: pop_back

求长度:size()

获取任意位置元素:& at(int inex)

将顺序表进行排序:sort(bool flag) //flag 为真,表示升序,否则是降序

头文件

#ifndef SQL_H
#define SQL_H

typedef int datatype;
class sql
{
private:
    datatype *ptr;
    int size;
    int len;

public:
    void init(int size);
    bool is_full();
    bool is_empty();
    void push_back(datatype data);
    void pop_back();
    void insert_data(datatype data,int index);
    void delete_data(int index);
    int get_len();
    int get_data(int index);
    int sort_sql(bool flag);
    int show();
};

#endif // SQL_H

源文件

#include "sql.h"
#include <iostream>
using namespace std;
void sql::init(int size){
    this->ptr=new datatype[size];
    this->size=size;
    this->len=0;
}
bool sql:: is_full(){


    return this->size<=len;
}
bool sql::is_empty(){
    return  this->len<=0;
}

void sql:: push_back(datatype data){
    if(is_full())return;
    ptr[len]=data;
    len++;
}
void sql:: pop_back(){
    if(is_empty())return;
    len--;
}
void sql:: insert_data(datatype data,int index){
    if(is_full())return;
    for(int i=len-1;i>=index-1;i--){

        ptr[i+1]=ptr[i];
    }
    ptr[index-1]=data;
    len++;
}
void sql:: delete_data(int index){
    if(is_empty())return;
    for(int i=index-1;i<len;i++){
        ptr[i]=ptr[i+1];
    }
    len--;
}
int sql:: get_len(){
    return len;
}
int sql:: get_data(int index){
    return ptr[index-1];
}
int sql:: sort_sql(bool flag){
    datatype temp;
    for(int i=0;i<len;i++){
        for(int j=0;j<len-i-1;j++){
            if(flag){
                if(ptr[j]>ptr[j+1]){
                temp=ptr[j+1];
                ptr[j+1]=ptr[j];
                ptr[j]=temp;
            }
            }else{
                if(ptr[j]<ptr[j+1]){
                    temp=ptr[j+1];
                    ptr[j+1]=ptr[j];
                    ptr[j]=temp;
                }
            }
        }
    }
}
int sql:: show(){

    for(int i=0;i<len;i++){
          std::cout<<ptr[i]<<" ";
    }
    std::cout<<std::endl;
}

main

#include <iostream>
#include <sql.h>

using namespace std;

int main()
{
    sql s;
    s.init(5);
    s.push_back(1);
    s.push_back(2);
    s.push_back(4);
    s.push_back(8);
    s.push_back(3);

    s.show();
    s.pop_back();
    s.show();
    s.insert_data(100,2);
    s.show();
    s.delete_data(1);
    s.show();
    cout<<"长度"<<s.get_len()<<",第3个元素"<<s.get_data(3)<<endl;
    s.sort_sql(1);
      s.show();
     s.sort_sql(0);

       s.show();
       cout << "Hello World!" << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值