zoukankan      html  css  js  c++  java
  • C++ 静态链表基本算法实现

    C++ 静态链表基本算法实现

    #ifndef StaticLinkList_h
    #define StaticLinkList_h
    const int MAXSIZE = 100;
    template <class T>
    struct StaticNode{
        T data;
        int next;
    };
    template <class T>
    class StaticLinkList{
    public:
        StaticLinkList();
        StaticLinkList(T a[], int n);
        void Insert(int i, T a);
        T Delete(int i);
        int Get(int n);
        int Locate(T x);
        int NewNode();
        void DeleteNode(int i);
    private:
        int front;
        int tail;
        StaticNode<T> SArray[MAXSIZE];
    }
    template <class T>
    StaticLinkList<T>:: StaticLinkList(){
        for(int i = 0;i<MAXSIZE-1;i++){
            SArray[i].next = i+1;
        }
        SArray[MAXSIZE-1].next = -1;
        front = -1;
        tail = 0;
    }
    template <class T>
    StaticLinkList<T>:: StaticLinkList(T a[], int n){
        if(n>MAXSIZE) throw "溢出";
        for(int i=0;i<MAXSIZE-1;i++){
            SArray[i].next = i+1;
        }
        SArray[MAXSIZE-1].next = -1;
        for(int i = 0;i<n-1;i++){
            SArray[i] = a[i];
        }
        front = 0;
        tail = SArray[n-1].next;
        SArray[n-1].next = -1;
    }
    template <class T>
    int StaticLinkList<T>::NewNode(){
        if(-1 == tail) throw"空间不足";
        int pos = tail;
        tail = SArray[tail].next;
        return pos;
    }
    template <class T>
    T StaticLinkList<T>::Delete(int i){
        if(i<0 || i>MAXSIZE -1){ throw "释放空间错误";}
        if(front == i) front = SArray[i].next;
        SArray[i].next = tail;
        tail = i;
    }
    #endif /* StaticLinkList_h */
  • 相关阅读:
    删除ubuntu中多余的主题和背景文件
    android 开发之动画Activity
    android开发之自定义组件
    android 开发之Activity切换
    程序设计课件
    初识Proximal Policy Optimization (PPO)
    初识Auction Theory
    什么是Experience Replay和Seperate Target Networks
    初识ActorCritic
    初识Stackelberg Game
  • 原文地址:https://www.cnblogs.com/ycbeginner/p/10006373.html
Copyright © 2011-2022 走看看