数据结构与算法——线性表 1

数据结构与算法——线性表 1

今天学习了一下线性表,线性表是常用的一种数据结构,以下变为其代码,此代码是顺序存储+固定长度的, 编译器为gcc version 6.1.0 (GCC), 亲测可用,但效率就不知道了。。。

//List_my.h
//顺序存储+固定长度

#ifndef _LIST_MY_H_
#define _LIST_MY_H_

#define LIST_MAX_SIZE       (100)

template<typename   T>

class       List_my{
public:
    typedef unsigned int    uint;

    List_my():length_l(0){};
    List_my(T* d, uint id);

    bool        empty(void);
    bool        full(void);
    bool        insert(const T &d, uint id);
    bool        remove(T &d, int id);
    bool        find(const T &d, uint& loc);
    bool        locate(uint id, uint& loc);

    uint        size(void)const{return LIST_MAX_SIZE;}
    uint        length(void){return length_l;}
    T       get_data(uint id)const{return data[id-1];}
    bool        set_data(const T &d, uint id){data[id-1] = d;}  

private:
    T   data[LIST_MAX_SIZE];
    uint    length_l;
};

template<typename T>
List_my::List_my(T* d, uint len){
    for(int i=0;itypename T>
bool        List_my::empty(void){
    if(length_l)return false;
    return true;
}

template<typename T>
bool        List_my::full(void){
    if(length_l <= LIST_MAX_SIZE)return false;
    return true;
}

template<typename T>
bool        List_my::find(const T &d, uint& loc){    
    for(int i= 0;iif(d == data[i]){
            loc = i;
            return true;
        }
    }
    return true;
}

template<typename T>
bool        List_my::locate(uint id, uint& loc){ 
    if(id>length_l || id<1) return false;
    loc = id-1;
    return true;
}

template<typename T>
bool        List_my::insert(const T &d, uint id){
    if(id>length_l+1  || full() ) return false;
    for(unsigned int i = length_l;i>id; --i)
        data[i+1] = data[i];
    data[id-1] = d;
    length_l++;
    return true;
}

template<typename T>
bool        List_my::remove(T &d, int id){   
    if(id>length_l || empty()) return false;
    d = data[id-1];
    for(unsigned int i=d-1; i<=length_l;++i)
        data[i] = data[i+1];
    length_l--;
    return true;
}

#endif

测试代码

//测试代码
#include 
#include "List_my.h"

using namespace std;

template<typename T>
void    display(List_my& l){
    for(unsigned int i=1;i<=l.length();++i)
        cout<" ";
    cout<cout<int main(void){
    int a[]={1,2,3,4,5};
    List_my<int>    l1;
    List_my<int>    l2(a, 5);
     unsigned int   num;
    int m;

    cout<cout<cout<2)<0, 1);
    display(l2);
    for(unsigned int i=1;i<5;++i)   l1.insert(i, i);
    display(l1);
    display(l2);
    l2.remove(m, 2);
    cout<4;
    l1.find(m, num);
    cout<3,num);
    cout<return(EXIT_SUCCESS);
}

你可能感兴趣的:(算法)