//List.h
#ifndef LIST_H
#define LIST_H
#define MAXSIZE 100
#include <iostream>
using namespace std;
template <class T> class List
{
public:
List();
virtual ~List();
void InitList();
void Insert(int pos, T val); //返回插入的内容
T Del(int pos); //返回删除的内容
void Clean();
bool IsEmpty();
T GetVal(int pos);
T SetVal(int pos, T val);
void Display();
protected:
T data[MAXSIZE];
int len;
private:
};
#endif // LIST_H
//List.cpp 注意函数的书写形势。
#include "../include/List.h"
template <class T>
List<T>::List()
{
// len = 0;
for(int i=0; i<MAXSIZE-5; i++) {
data[i] = 1;
}
len = MAXSIZE-5;
}
template <class T>
List<T>::~List()
{
delete[] data;
}
template <class T>
void List<T>::InitList()
{
int i = 0;
while(1) {
cin >> data[i];
if(data[i]==0) {
break;
}
i++;
len++;
}
}
template <class T>
void List<T>::Display()
{
for(int i=0; i<len; i++) {
cout<< data[i] <<" ";
}
cout << endl;
cout <<endl;
}
template <class T>
void List<T>::Insert(int pos, T val) //pos为下标
{
if(len<(MAXSIZE-1)) {//判断是否溢出
if(pos<=len) {
for(int i=0;i<(len-pos-1);i++) {
data[len-i] = data[len-1-i];//搬移
}
data[pos] = val;
len++;
}else {
cout<<"不可插入的位置!" <<endl;
}
}else {
cout<<"无足够空间" <<endl;
}
}
template <class T>
T List<T>::Del(int pos)
{
T temp = data[pos];
for(int i=pos;i<len-1;i++) {
data[i] = data[i+1];
}
len--;
return temp;
}
template <class T>
bool List<T>::IsEmpty()
{
if(len==0) {
return true;
}
return false;
}
template <class T>
void List<T>::Clean()
{
len = 0;
}
template <class T>
T List<T>::GetVal(int pos)
{
return data[pos];
}
template <class T>
T List<T>::SetVal(int pos, T val)
{
T temp = data[pos];
data[pos] = val;
return temp;
}
//main
#include "./include/List.h"
#include "./src/List.cpp" //不添加该文件main中的List提示未定义
int main()
{
// cout << "初始化顺序表:" <<endl;
List<int> list;
// list.InitList();
list.Display();
list.Insert(99,2);
list.Insert(2,2);
list.Display();
// cout<<list.GetVal(2)<<endl;
list.Del(2);
list.Display();
/* list.Clean();
cout << list.IsEmpty() <<endl;*/
list.SetVal(2,8);
list.Display();
return 0;
}