C++寫的一個List

來源:互聯網
上載者:User

#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename T>
struct Node
{
    T value;
    Node* next;
    Node* pre;
};
template<typename T>
class List
{
private:
    Node<T>* head;
    Node<T>* current;
    Node<T>* create;
    int number ;
public:
    List()
    {
        head=new Node<T>();
        head->next=NULL;
        head->pre=NULL;
        current=head;
        number=0;
    }
    ~List(){
        Node<T> * temp=current;
        while (temp->next!=NULL)
        {
            temp=temp->next;
            delete(temp->pre);
        }
        if (temp->next==NULL)
        {
            delete(temp);
        }
        cout<<"析構完成"<<endl;
    }
    void Add(T a)
    {
        create=new Node<T>();
        create->value=a;

        create->next=current;
        create->pre=NULL;
        current->pre=create;

        current=create;
        number++;
    }
    bool Contains(T a){
        Node<T> * temp=current;
        bool ret=false;
        while (temp->next!=NULL)
        {
            if (temp->value==a)
            {
                ret=true;
                break;
            }
            temp=temp->next;
        }
        return ret;
    }
    void Remove(T a){
        Node<T> * temp=current;
        while (temp->next!=NULL)
        {
             if (temp->value==a)
             {
                 number--;
                if (temp->pre!=NULL)
                {
                    temp->pre->next=temp->next;
                    temp->next->pre=temp->pre;
                    delete(temp);
                }
                else
                {
                    current=current->next;
                    delete(temp);
                }
                break;
             }
             else
             {
                temp=temp->next;
             }
        }
    }
    void Display()   
    {
            Node<T> * temp=current;
        while (temp->next!=NULL)
        {
            cout<<temp->value<<endl;
            temp=temp->next;
        }

    }
    int getNumber(){
        return number;
    }
};

void Test()
{
    List<int> *p=new List<int>();
    for (int i=0;i<3553;i++)
    { p->Add(i);
    }

    p->Display();
    cout<<"個數:"<<p->getNumber()<<endl;
    getchar();
    cout<<p->Contains(333)<<endl;
    delete(p);
}
    int main()
    {
        Test();
        getchar();
        return 0;
    }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.