1. 利用模板类完成顺序表(两天时间,今天至少写出大致框架)

代码

//implement template in sqlist
#include <iostream>
#include <cstring>

#define MAXSIZE 100

using namespace std;

template <typename T>
class Sqlist
{
    unsigned int len = 0;
    T *ptr_data=NULL;

public:
    Sqlist():ptr_data(new T [MAXSIZE])
    {
         cout << "Sqlist init" <<endl;
        init();
    }
    ~Sqlist()
    {
        cout << "Sqlist destructor" <<endl;
        delete[] ptr_data;
    }

    int push(T element); // append an element at the end
    T at(unsigned int index); //get element at index postion
    int init(); //initilize sqlist

};

template <typename T>
int Sqlist<T>::init()
{
    if (NULL == ptr_data) //why ther is a warning?
    {
        cout << "ptr_data is NULL" <<endl;
        return  -1;
    }
    memset(ptr_data, 0, sizeof(T[MAXSIZE]));

    return 0;
}

template <typename T>
int Sqlist<T>::push(T element)
{
    //is full
    if(len == MAXSIZE)
    {
        cout << "sqlist is full" <<endl;
        return -1;
    }
    *(ptr_data + len) = element;
    len++;
    return 0;
}

template <typename T>
T Sqlist<T>::at(unsigned index)
{
    if(index < 0 || len > MAXSIZE)
    {
        cout << "index is out of range" <<endl;
        return NULL; //why ther is a warning?
    }

    return *(ptr_data + index);
}




int main()
{
    Sqlist<int> list;

    for(int i=0; i<10; i++)
    {
        list.push(i*i);
    }

    for(unsigned int i=0; i<10; i++)
    {
        cout << "list.at(" << i << ")" <<list.at(i) <<endl;
    }


    cout << "--The end--" << endl;
    return 0;
}

运行结果

c++ / day06-LMLPHP

2. 整理思维导图

c++ / day06-LMLPHP

01-04 02:02