手动封装一个顺序表(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;
}