c++:类class
1.手动封装一个顺序表(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 为真,表示升序,否则是降序
主函数
#include <iostream>
#include <string.h>
#include "list.h"
int main()
{
Seqlist list;
list.init(6);
list.push_back(1);
list.push_back(4);
list.push_back(5);
list.push_back(2);
list.push_back(7);
list.show();
cout<<"插入:"<<endl;
list.insert(2,9);
list.show();
cout<<"删除:"<<endl;
list.erase(2);
list.show();
cout<<"尾删:"<<endl;
list.pop_back();
list.show();
cout<<"当前大小:"<<ends;
cout<<list.at(2)<<endl;
cout<<"排序后:"<<endl;
list.sort(1);
list.show();
return 0;
}
list.h
#ifndef LIST_H
#define LIST_H
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,int num);
//任意位置删除
void erase(int index);
//尾删
void pop_back();
void show();
//当前长度
int cur_size();
int at(int index);
void sort(bool flag);
};
#endif // LIST_H
list.c
#include "list.h"
#include <iostream>
using namespace std;
//封装顺序表
void Seqlist::init(int n)
{
//堆区申请空间(大小为n)
this->ptr=new int[n];
//bzero(this->ptr,sizeof(int)*n);
this->len=0;
this->size=n;
//
}
//判空
bool Seqlist::empty()
{
return this->len==0;
}
bool Seqlist::full()
{
return this->len==this->size;
}
void Seqlist::push_back(int e)//尾插
{
if(this->full())
{
return ;
}
this->ptr[len++]=e;
}
//插入
void Seqlist::insert(int index,int num)
{
if(full())
{
return;
}
for(int i=len-1;i>=index-1;i--)
{
ptr[i+1]=ptr[i];
}
ptr[index-1]=num;
len++;
}
//任意位置删除
void Seqlist::erase(int index)
{
if(empty())
{
return;
}
for(int i=index;i<len;i++)
{
ptr[i-1]=ptr[i];
ptr[i]=NULL;
}
len--;
}
//尾删
void Seqlist::pop_back()
{
if(empty())
{
return;
}
ptr[len-1]=NULL;
len--;
}
void Seqlist::show()
{//判空
if(len==0)
{
return;
}
cout<<"顺序表"<<endl;
for(int i=0;i<len;i++)
{
cout<<ptr[i]<<ends;
}
cout<<endl;
}
//当前长度
int Seqlist::cur_size()
{
if(empty())
{
return 0;
}
else
{
return len;
}
}
int Seqlist::at(int index)
{
int num;
num=ptr[index-1];
return num;
}
void Seqlist::sort(bool flag)
{
if(flag)
{
for(int i=1;i<len;i++)
{
for(int j=0;j<len-i;j++)
{
if(ptr[j]>ptr[j+1])
{
int temp;
temp=ptr[j];
ptr[j]=ptr[j+1];
ptr[j+1]=temp;
}
}
}
}
else
{
for(int i=1;i<len;i++)
{
for(int j=0;j<len-i;j++)
{
if(ptr[j]<ptr[j+1])
{
int temp;
temp=ptr[j];
ptr[j]=ptr[j+1];
ptr[j+1]=temp;
}
}
}
}
}
原文地址:https://blog.csdn.net/m0_58572142/article/details/142400362
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!