手动封装一个顺序表(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 SEQLIST_H
#define SEQLIST_H
#endif // SEQLIST_H
#include<iostream>
using namespace std;
class SeqList
{
private:
int *ptr;
int size; //总长度
int len=0; //当前顺序表实际长度
public:
//初始化
void init(int n);
//判断是否为空
bool empty();
//判断是否满
bool full();
//尾部插入
void push_back(int e);
//任意位置插入
void insert(int index);
//任意位置删除
void erase(int index);
//尾部删除
void pop_back();
//求长度
int size_();
//获取任意位置元素
int &at(int inex);
//排序
void sort(bool flag);
//输出
void show();
};
源文件
#include"seqlist.h"
using namespace std;
void SeqList:: init(int n)
{
//在堆区申请一个长度为n的空间
ptr = new int[n];
//给len初始化
size = n;
len = 0;
}
bool SeqList:: empty()
{
return len==0;
}
bool SeqList:: full()
{
return len == size;
}
void SeqList:: push_back(int e)
{
if(full())
{
return;
}
ptr[len] = e;
len++;
}
void SeqList:: insert(int index)
{
if(full())
{
return;
}
int i,e;
cout<<"请输入插入数据:";
cin>>e;
for(i=len-1;i>=index;i--)
{
ptr[i+1] = ptr[i];
}
ptr[index] = e;
len++;
}
void SeqList:: erase(int index)
{
if(index>size || index<0 )
{
cout<<"删除失败"<<endl;
}
int i;
for(i=index-1;i<len;i++)
{
ptr[i] = ptr[i+1];
}
len--;
}
void SeqList:: pop_back()
{
ptr[len] = 0;
len--;
}
int SeqList:: size_()
{
int i=0;
while(ptr[i])
{
i++;
}
return i;
}
int &SeqList::at(int inex)
{
return ptr[inex-1];
}
void SeqList:: sort(bool flag)
{
int i,j;
int team;
if(flag)
{
for(i=1;i<len;i++)
{
for(j=0;j<len-i;j++)
{
if(ptr[j]<ptr[j+1])
{
team = ptr[j];
ptr[j] = ptr[j+1];
ptr[j+1] = team;
}
}
}
}
else
{
for(i=1;i<len;i++)
{
for(j=0;j<len-i;j++)
{
if(ptr[j]>ptr[j+1])
{
team = ptr[j];
ptr[j] = ptr[j+1];
ptr[j+1] = team;
}
}
}
}
}
void SeqList:: show()
{
if(empty())
{
return;
}
cout<<"当前顺序表中的元素分别是:";
for(int i=0;i<len;i++)
{
cout<<ptr[i]<<" ";
}
cout<<endl;
}
主函数
#include"seqlist.h"
using namespace std;
int main()
{
SeqList s1;
s1.init(5);
s1.push_back(2);
s1.push_back(9);
s1.push_back(5);
s1.insert(1);
s1.show();
return 0;
}
思维导图