现在的位置: 首页 > 综合 > 正文

顺序表结构的模版类

2012年05月05日 ⁄ 综合 ⁄ 共 1709字 ⁄ 字号 评论关闭
//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;
}

抱歉!评论已关闭.