共有回帖数 0 个
-
#include "stdlib.h"
#include "stdio.h"
#include "string"
#include "iostream"
using namespace std;
template class T
class sq_List
{
public:
sq_List(int c,int l){cap = c;len = l;} //构造函数,初始化表长度和空间容量
void creat_List(); //创建空的顺序表
T check_List(); //检测顺序表的状态
void input_List(); //输入顺序表的元素
T *insert_List(int pos,int num); //插入元素
T *delete_List(int pos);//删除元素
void show_List(); //输出新表
void free_List(); //释放空间
private:
int cap; //存储空间容量
int len; //顺序表的长度
T *p; //模板类型指针
};
//建立空的顺序表
template class T
void sq_ListT::creat_List()
{
p = new T[cap]; //指向动态开辟的一维数组空间的首地址
}
//检测顺序表
template class T
T sq_ListT::check_List()
{
if(cap == len) return -1;
else if(len == 0) return 0;
else return 1;
}
//输入顺序表的元素,输出
template class T
void sq_ListT::input_List()
{
int i;
for(i = 0;ilen;i++) //输入顺序表的元素
cin *(p+i);
for(i = 0;ilen;i++) //输出顺序表的元素
cout *(p+i) " ";
cout endl;
}
//插入元素
template class T
T *sq_ListT::insert_List(int pos_in,int num)
{
int i;
if(cap == len) cout "上溢错误" endl;//顺序表已满的情况
if(pos_inlen) pos_in = len+1; //插入位置在表的最后一个元素之后,表中元素不需要移动
if(pos_in1) pos_in = 1; //插入元素在表的第一个元素之前,需要移动 表的所有元素
for(i = len;i=pos_in;i--)
p = p[i-1];
p[pos_in-1] = num; //插入新元素
len++; //表长度加一
return p; //返回首地址
}
//删除元素
template class T
T *sq_ListT::delete_List(int pos_de)
{
int i;
if(len == 0) cout "下溢错误" endl; //顺序表为空表,表中没有元素
if(pos_de1||pos_de=len) cout "没有这个元素" endl;//表中没有待删除的元素
for(i = pos_de;ilen;i++)
p[i-1] = p;
len--; //表长度减一
}
//输出顺序表
template class T
void sq_ListT::show_List()
{
int i;
for(i = 0;ilen;i++) //输出顺序表的元素
cout *(p+i) " ";
}
//释放空间
template class T
void sq_ListT::free_List()
{
delete []p;
}
int main()
{
sq_Listint list(10,7);
list.creat_List();
list.input_List();
list.check_List();
list.insert_List(5,26);
list.delete_List(8);
list.show_List();
list.free_List();
system("pause");
return 0;
}
楼主 2016-01-28 14:11 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知