数据结构:线性表(顺序存储)顺序表类(实现顺序表的创建,输出,插入,删除功能)

    线性表顺序存储一般就是以数组的形式存储,一切都是对数组的操作,下面给出一个类定义的头文件,和一个实例

顺序表类:文件名 sq_LList.h

 

#include <iostream>

using namespace std;
template <class T>
class sq_LList
{
private:
	int mm; //存储空间容量	
	int nn; //顺序表长度
	T *v; //顺序表存储空间首地址
public:
	sq_LList()
	{
		mm=0;         
		nn=0;
		return;
	}
	sq_LList(int);  //建立空顺序表,申请存储空间
	void prt_LList();  //顺序输出顺序表中的元素与顺序表长度
	int flag_sq_LList();  //检测顺序表的状态
	void ins_sq_LList(int,T);//在表的指定元素前插入新元素
	void del_sq_LList(int);    //在表中删除指定元素
};
template <class T>
sq_LList <T>::sq_LList(int m)
{
	mm=m;      //存储空间容量
	v=new T[mm];//动态申请存储空间
	nn=0;   //顺序表长度为0,即建立空顺序表
	return;
}
template <class T>
void sq_LList<T>::prt_LList()
{
	int i;
	cout<<"nn="<<nn<<endl;
	for(i=0;i<nn;i++)
		cout<<v[i]<<endl;
	return ;
}

template <class T>
int sq_LList<T>::flag_sq_LList()
{
	if(nn==mm)
	{
        cout<<"空间已满"<<endl;
		return(-1);
	}
	if(nn==0)
	{
		cout<<"顺序表为空"<<endl;
		return(0);
	}
	return(1);
}
template <class T>
void sq_LList<T>::ins_sq_LList(int i,T b)
{
	int k;
	if(nn==mm)
	{
		cout<<"已满"<<endl;return;
	}
	if(i>nn)
		i=nn+1;
	if(i<1)
		i=1;
	for(k=nn;k>=i;k--)
	{
		v[k]=v[k-1];//从最后一个元素直到第i个元素都后移一个位置,注意数组是从0开始
	}
	v[i-1]=b;
	nn=nn+1;
	return ;
}
template<class T>
void sq_LList<T>::del_sq_LList(int i)
{
	int k;
	if(nn==0)
	{
		cout<<"表为空"<<endl;
		return;
	}
	if(i<1||i>nn)
	{
		cout<<"表中没有这个位置的元素"<<endl;
		return;
	}
	for(k=i;k<nn;k++)
	{
		v[k-1]=v[k];
	}
	nn=nn-1;
	return ;
}


具体应用实例:文件名 test.cpp

#include "sq_LList.h"
#include <stdlib.h>
int main()
{
	sq_LList<double> s1(100);
	cout<<"第一次输出顺序表对象s1:"<<endl;
	s1.prt_LList();
	s1.ins_sq_LList(0,1.5);
	s1.ins_sq_LList(1,2.5);
	s1.ins_sq_LList(4,3.5);
	cout<<"第二次输出顺序表对象s1:"<<endl;
	s1.prt_LList();
	s1.del_sq_LList(0);
	s1.del_sq_LList(2);
	cout<<"第三次输出顺序表对象s1:"<<endl;
	s1.prt_LList();
	system("pause");
	return 0;
}


输出结果:

第一次输出顺序表对象s1:
nn=0
第二次输出顺序表对象s1:
nn=3
2.5
1.5
3.5
表中没有这个位置的元素
第三次输出顺序表对象s1:
nn=2
2.5
3.5
请按任意键继续. . .


 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值