#include<iostream>
using namespace std;
class List
{
public:
List(int size);//创建
~List();//销毁
void ClearList();//清空线性表
bool ListEmpty();//判断是否为空表
int ListLenght();//求线性表的长度
int LocateElem(int *e);//
bool ListInsert(int i,int *e);//在第i个位置插入元素
bool ListDelete(int i,int *e);//删除第i个位置的元素
void ListTraverse();//遍历线性表
void InsertSort();
private:
int *m_pList;
int m_iSize;//线性表大小
int m_iLength;//线性表长度
};
List::List(int size)
{
m_iSize=size;
m_pList=new int[m_iSize];
m_iLength=0;
}
List::~List()
{
delete []m_pList;
m_pList=NULL;
cout<<"销毁完成"<<endl;
}
void List::ClearList()
{
m_iLength=0;
}
bool List::ListEmpty()
{
if(m_iLength==0)
return true;
else
return false;
}
int List::ListLenght()
{
return m_iLength;
}
int List::LocateElem(int *e)
{
for(int i=0;i<m_iLength;i++)
{
if(m_pList[i]==*e)
return i;
}
return -1;
}
void List::ListTraverse()
{
for(int i=1;i<m_iLength;i++)
cout<<m_pList[i]<<" ";
cout<<endl;
}
bool List::ListInsert(int i,int *e)
{
if(i<0||i>m_iLength)
{
return false;
}
for(int k=m_iLength-1;k>=i;k--)
{
m_pList[k+1]=m_pList[k];
}
m_pList[i]=*e;
m_iLength++;
return true;
}
bool List::ListDelete(int i,int *e)
{
if(i<0||i>=m_iLength)
{
return false;
}
*e=m_pList[i];
for(int k=i+1;k<m_iLength;k++)
{
m_pList[k-1]=m_pList[k];
}
m_iLength--;
return true;
}
void List::InsertSort()
{
int i,j;
for(i=2;i<=m_iLength;i++)
{
if(m_pList[i]<m_pList[i-1])
{
m_pList[0]=m_pList[i];//等待插入的数据暂时存到监视哨中
m_pList[i]=m_pList[i-1];//将m_pList[i]后移
for(j=i-2;m_pList[0]<m_pList[j];--j)//从后向前寻找插入位置
{
m_pList[j+1]=m_pList[j];//将数据逐个后移,直到找到插入位置
}
m_pList[j+1]=m_pList[0];//将原m_pList[i]插入到正确位置
}
}
}
int main()
{
int e1=6,e2=1,e3=2,e4=7,e5=9,e6=3,e7=4,e8=5,e9=10,e10=8,no_use=99;
List *list1=new List(10);
list1->ListInsert(0,&no_use);//填坑
list1->ListInsert(1,&e1);
list1->ListInsert(2,&e2);
list1->ListInsert(3,&e3);
list1->ListInsert(4,&e4);
list1->ListInsert(5,&e5);
list1->ListInsert(6,&e6);
list1->ListInsert(7,&e7);
list1->ListInsert(8,&e8);
list1->ListInsert(9,&e9);
list1->ListInsert(10,&e10);
list1->ListTraverse();
list1->InsertSort();
list1->ListTraverse();
list1->~List();
return 0;
}
直接插入排序
最新推荐文章于 2022-04-15 09:39:03 发布