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 ;

        }


}

原文地址:https://www.cnblogs.com/blfshiye/p/4590530.html