• C++学习笔记47:链表的概念与结点类模板


    学堂在线学习笔记

     链表的概念与结点类模板

    顺序访问的线性群体--链表类

    链表是一种动态数据结构,可以用来表示顺序访问的线性群体;

    链表是由系列结点组成,结点可以在运行时动态生成;

    每一个结点包括数据域和指向链表中下一个结点的指针(即下一个结点的地址)。如链表中每个结点中只有一个指向后继结点的指针,则该链表称为单链表;

    单链表的结点类模板

    template <class T>
    void Node<T>::insertAfter(Node<T> *p)
    {
        //p结点指针域指向当前结点的后继结点
        p->next = next;
        next = p;//当前结点的指针域指向p
    }

    删除结点之后的结点:

    Node<T> *Node<T>::deleteAfter(void)
    {
        Node<T> *tempPtr = next;
        if (next == 0)
            return 0;
        next = tempPtr->next;
        return tempPtr;
    }

    //Node.h
    #ifndef NODE_H
    #define NODE_H
    //类模板的定义
    template <class T> class Node
    {
    private:
        Node<T> *next;//指向后继结点的指针
    public:
        T data;//数据域
        Node(const T &data, Node<T> *next = 0);  //构造函数
        void insertAfter(Node<T> *p); //在本结点之后插入一个同类结点p
        Node<T> *deleteAfter();//删除本结点的后继结点,并返回其地址
        Node<T> *nextNode();  //获取后继结点的地址
        const Node<T> *nextNode() const;//获取后继结点的地址
    };
    //类的实现部分
    //构造函数,初始化数据和指针成员
    template <class T> Node<T> ::Node(const T &data ,Node<T> *next = 0) : data(data),next(next){}
    //返回后继结点的指针
    template <class T> Node<T> *Node<T>::nextNode()
    {
        return next;
    }
    //返回后继结点的指针
    template <class T> const Node<T> *Node<T>::nextNode() const
    {
        return next;
    }
    
    //在当前结点之后插入一个结点p
    template <class T> void Node<T> ::insertAfter(Node<T> *p)
    {
        p->next = next;//p结点指针域指向当前结点的后继结点
        next = p;//当前结点的指针域指向p
    }
    
    //删除当前结点的后继结点,并返回其地址
    template <class T> Node<T> *Node<T>::deleteAfter()
    {
        Node<T> *tempPtr = next;//将欲删除的结点地址存到tempPtr
        if (next == 0)//如果当前结点没有后继结点,返回空指针
            return 0;
        next = tempPtr->next;//使当前结点的指针域指向tempPtr的后继结点
        return tempPtr;//返回被删除的结点的地址
    }
    
    #endif // !NODE_H
    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Live2D 看板娘
    Bound mismatch: The typae CertificateDirectory is not a valid substitute for the bounded parameter <M extends Serializable>
    Duplicate property mapping of contactPhone found in
  • 原文地址:https://www.cnblogs.com/hujianglang/p/6545681.html
Copyright © 2020-2023  润新知