简单数据结构之顺序表(C++ vector 实现)

/*
 ============================================================================
 Name        : seq_list_vector.cpp
 Author      : ntsk13 beijiwei@qq.com
 Version     :
 Copyright   : GPL
 Description : sequence list study, complement by C++ vector
 Date        : 2015.06.08
 ============================================================================
 */

#include <iostream>
#include<vector>
#include<algorithm>

using namespace std;

typedef struct elem
{
	int element;
}Seqlist_t;

class sqlist
{
public:
	vector<Seqlist_t> v;
	int len;//长度
	void init();
	void clear();
	bool is_empty();
	int length();
	Seqlist_t get_elem(int i);
	int get_locate(Seqlist_t e);
	Seqlist_t get_last(int i);
	Seqlist_t get_next(int i);
	void add_back(Seqlist_t e);
	void delete_back();

	void insert_elem(Seqlist_t e,int i);
	void delete_elem(int i);
	void traverse();
	//void sort_sql();
};


int main()
{
	//int a[5]={3,0,4,1,2};
	sqlist L;
	Seqlist_t zero,one,two,three,four;

	zero.element=3;
	one.element=0;
	two.element=4;
	three.element=1;
	four.element=2;


	L.init();
	L.add_back(zero);
	L.add_back(one);
	L.add_back(two);
	L.add_back(three);
	L.add_back(four);

	L.traverse();
	cout<<"===================================="<<endl;
	L.delete_back();
	L.traverse();
	cout<<"===================================="<<endl;
	L.delete_elem(2);
	L.traverse();
	cout<<"===================================="<<endl;
	L.insert_elem(four,0);
	L.traverse();
	cout<<"===================================="<<endl;

	return 0;
}


void sqlist::init()
{
	len=0;
}

void sqlist::clear()
{
	v.clear();
	len=0;
}
bool sqlist::is_empty()
{
	return (len==0)?true:false;
}
int sqlist::length()
{
	return len;
}
Seqlist_t sqlist::get_elem(int i)
{
	return v.at(i);
}
int sqlist::get_locate(Seqlist_t e)
{
	int i=0;
	for( i=0; i< len;i++)
		if(e.element==v.at(i).element)
			break;
	return (i !=len ) ? (i) : (-1);
}
Seqlist_t sqlist::get_last(int i)
{
	return v.at(i-1);
}
Seqlist_t sqlist::get_next(int i)
{
	return v.at(i+1);
}

void sqlist::add_back(Seqlist_t e)
{
	v.push_back(e);
	len++;
}
void sqlist::delete_back()
{
	v.pop_back();
	len--;
}

void sqlist::insert_elem(Seqlist_t e,int i)
{
	v.insert(v.begin()+ i,e);
	len++;
}
void sqlist::delete_elem(int i)
{
	v.erase(v.begin()+ i);
	len--;
}
void sqlist::traverse()
{
	for(int i=0;i<len;i++)
		cout<<"The element is "<< v.at(i).element<<endl; ;
}



<pre name="code" class="cpp">/*
 ============================================================================
 Name        : seq_list_vector.cpp
 Author      : ntsk13 beijiwei@qq.com
 Version     :
 Copyright   : GPL
 Description : sequence list study, complement by C++ vector
 Date        : 2015.06.08
 ============================================================================
 */

#include <iostream>
#include<vector>
#include<algorithm>

using namespace std;


class sqlist
{
public:
	vector<int> v;
	int len;//长度

	void init();
	void clear();
	bool is_empty();
	int length();
	int get_elem(int i);
	int get_locate(int e);
	int get_last(int i);
	int get_next(int i);
	void add_back(int e);
	void delete_back();

	void insert_elem(int e,int i);
	void delete_elem(int i);
	void traverse();
	void sort_sql();
};


int main()
{
	//int a[5]={3,0,4,1,2};
	sqlist L;
	int zero,one,two,three,four;

	zero=3;
	one=0;
	two=4;
	three=1;
	four=2;


	L.init();
	L.add_back(zero);
	L.add_back(one);
	L.add_back(two);
	L.add_back(three);
	L.add_back(four);

	L.traverse();
	cout<<"===================================="<<endl;
	L.delete_back();
	L.traverse();
	cout<<"===================================="<<endl;
	L.delete_elem(2);
	L.traverse();
	cout<<"===================================="<<endl;
	L.insert_elem(four,0);
	L.traverse();
	cout<<"===================================="<<endl;
	L.sort_sql();
	L.traverse();

	return 0;
}


void sqlist::init()
{
	len=0;
}

void sqlist::clear()
{
	v.clear();
	len=0;
}
bool sqlist::is_empty()
{
	return (len==0)?true:false;
}
int sqlist::length()
{
	return len;
}
int sqlist::get_elem(int i)
{
	return v.at(i);
}
int sqlist::get_locate(int e)
{
	int i=0;
	for( i=0; i< len;i++)
		if(e==v.at(i))
			break;
	return (i !=len ) ? (i) : (-1);
}
int sqlist::get_last(int i)
{
	return v.at(i-1);
}
int sqlist::get_next(int i)
{
	return v.at(i+1);
}

void sqlist::add_back(int e)
{
	v.push_back(e);
	len++;
}
void sqlist::delete_back()
{
	v.pop_back();
	len--;
}

void sqlist::insert_elem(int e,int i)
{
	v.insert(v.begin()+ i,e);
	len++;
}
void sqlist::delete_elem(int i)
{
	v.erase(v.begin()+ i);
	len--;
}
void sqlist::traverse()
{
	for(int i=0;i<len;i++)
		cout<<"The element is "<< v.at(i)<<endl; ;
}

void sqlist::sort_sql()
{
	sort(v.begin(),v.end());
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值