您的位置:首页 > 理论基础 > 数据结构算法

数据结构之C++实现顺序表(SeqList)无主函数

2018-03-08 20:20 591 查看
#include <iostream>
using namespace std;
#define SIZE 10
class SeqList
{
public:
SeqList()
{
m_capacity = SIZE;
m_data = new int[m_capacity];
m_size = -1;
}
~SeqList()
{
delete []m_data;
m_data=NULL;
m_capacity=0;//可有可无
m_size = -1;//同上注释
}
void PushBack(int v);
void PushFront(int v);
void insertValue(int i,int v);
void PopBack();
void PopFront();
void DeleteValue(int i);
bool IsEmpty(){return m_size == -1 ? true : false;}
bool IsFull(){return m_size == m_capacity-1 ? true:false;}
void Clear();
void Destroy();
void Sort();
void Reverse();
int Find(int value);
void print()
{
for(int i = 0;i<m_size+1;i++)
cout<<m_data[i]<<" ";
cout<<endl;
}
private:
int *m_data;
int m_capacity;
int m_size;
};
void SeqList::PushBack(int v)
{
if(!IsFull())
m_data[++m_size] = v;
}
void SeqList::PushFront(int v)
{
if(!IsFull())
{
for(int i = m_size+1;i>0;i--)
m_data[i] = m_data[i-1];
m_data[0] = v;
++m_size;
}
}
void SeqList::insertValue(int i,int v)
{
if(i>=0&&i<=m_size+1 && !IsFull())
{
for(int j = m_size+1;j>i;j--)
m_data[j] = m_data[j-1];
m_data[i] = v;
++m_size;
}
}
void SeqList::PopBack()
{
if(!IsEmpty())
m_size--;
}
void SeqList::PopFront()
{
if(!IsEmpty())
{
for(int i = 0;i<m_size;i++)
m_data[i] = m_data[i+1];
m_size--;
}
}
void SeqList::Reverse()
{
if(IsEmpty() || m_size == 0)
return;
for(int i = 0;i<=m_size/2;i++)
{
int t = m_data[i];
m_data[i] = m_data[m_size-i];
m_data[m_size-i] = t;
}
}

void SeqList::DeleteValue(int i)
{
if(i >=0 && i<=m_size&&!IsEmpty())
{
for(int j = i;j<m_size;j++)
m_data[j] = m_data[j+1];
m_size--;
}
}
void SeqList::Clear()
{
m_size = -1;
}
void SeqList::Destroy()
{
free(m_data);
m_data = NULL;
}
void SeqList::Sort()
{
if(IsEmpty() || m_size == 0)
return;
for(int i = 0;i<m_size;i++)
{
for(int j = 0;j<m_size-i;j++)
{
if(m_data[j] < m_data[j+1])
{
int  t = m_data[j];
m_data[j] = m_data[j+1];
m_data[j+1] = t;
}
}
}
}
int SeqList::Find(int value)
{
if(!IsEmpty())
{
for(int i = 0;i<=m_size;i++)
{
if(m_data[i] == value)
return i;
}
return -1;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SeqList g
相关文章推荐