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 ;

            }


    }

  • 相关阅读:
    C# 管理IIS7(转)
    KeyDown,KeyPress和KeyUp详解(转)
    C#中事件的声明与使用
    在类中使用SERVER
    什么是强类型,强类型集合
    配置sql server 2000以允许远程访问
    如何使textbox只能输入数字和小数点
    在BUTTON中触发GRIDVIEW的方法
    多个GRIDVIEW同时导入到一个EXCEL文件中
    ajax3.5的BUG
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4590530.html
Copyright © 2011-2022 走看看