zoukankan      html  css  js  c++  java
  • define a class for a linked list and write a method to delete the nth node.

    1、问题

    define a class for a linked list and write a method to delete the nth node.


    2、算法

    template <typename C>

    struct Node{

            C content ;

            Node<C>* next ;

    }


    template <typename T>

    class List{

    private:

            Node<T>* head ;

           unsigned int size ;

    public:

            List()

            {

                    size = 0 ;

                    head = NULL ;

            }


            Node<T>* getHead() { return head ; } ;


            bool insert(const T& data)

            {

                    Node<T>* node = new Node<T> ;

                    node->content = data ;

                    node->next = head;


                    head = node ;

                    size++ ;


                    return true ;

            }


            bool insert(const T&data, int pos)

            {

                    if( pos > size )

                    {

                            return false ;

                    }else if( pos == 0 )

                    {

                            return insert(data) ;

                    }


                    Node<T>* node = new Node<T> ;

                    node->content = data ;

                    node->next = NULL ;


                    unsigned int idx = 1 ;

                    Node<T>* frontNode = head ;

                    while(idx < pos)

                    {

                            idx++ ;

                            frontNode = frontNode->next ;

                    }


                    node->next = frontNode->next ;

                    frontNode ->next = node ;

                    size++ ;


                    return true ;

            }


            bool remove( int pos )

            {

                    if( pos > size )

                    {

                            return false ;

                    }


                    unsigned int idx = 0 ;

                    Node<T>* frontNode = NULL ;

                    Node<T>* node = head ;


                    while(idx < pos)

                    {

                            idx++ ;

                            frontNode = node ;

                            node = node->next ;

                    }

                    if( frontNode  )

                    {

                            frontNode->next = node->next ;

                    }else{

                            head = head->next ;

                    }

                    delete node ;

                    size-- ;


                    return true ;

            }


    }

  • 相关阅读:
    南京师范大学2021年高等代数数学分析考研试题及参考解答
    南昌大学2021年数学分析考研试题参考解答
    南昌大学2021年高等代数考研试题参考解答
    河南师范大学2021年数学分析考研试题参考解答
    河海大学2021年数学分析考研试题参考解答
    河海大学2021年高等代数考研试题参考解答
    合肥工业大学2021年高等代数数学分析考研试题参考解答
    福州大学2021年高等代数数学分析考研试题参考解答
    东华大学2021年高等代数数学分析考研试题参考解答
    安徽大学2021年数学分析考研试题参考解答
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4590530.html
Copyright © 2011-2022 走看看