当前位置:编程学习 > C/C++ >>

C++数据结构--链表

 

   用C++ 实现链表:

首先功能分析: 构造,清理,增删改查,求大小 判断空 ,取头取尾

 

#include <iostream>

using namespace std;

 

typedef int T;

//链表类

class LinkedList

{

    struct Node

    {

        T data;

        Node* next;

        Node(const T& t):data(t),next(NULL)

        {

        }

    };

public:

    //构造  析构  清空

    LinkedList():head(NULL)

    {

    }

    

    ~LinedList()

    {

        clear();

    }

 

    void clear()

    {

    

    }

    //增(insertBack insertFront)删改查(find)

    void insertFront(const T& t)

    {

    }

    void insertBack(const T& t)

    {

    }

    void erase(const T& t)

    {

    }

    void update(const T& t,const T& target)

    {

    }

    unsigned int  find(const T& t)

    {

        unsigned int position=0;

        return position;

    }

    //判断empty 求size  遍历(travel)

    bool empty()

    {

    }

    unsigned int size()

    {

        int size=0;

        return size;

    }

    

    void travel()

    {

    }

    //取头 取尾  

    T getHead()

    {

    }

    T getTail()

    {

 

    }

    //去指定位置取指针  辅助作用

    Node* getPointer(int position)

    {

        return NULL;

    }

private:

    //头指针 最重要的部分

    Node* head; 

};

 

int main()

{

}

功能添加:

 

#include <iostream>

using namespace std;

 

typedef int T;

//链表类

class LinkedList

{

    struct Node

    {

        T data;

        Node* next;

        //初始化data next 阻止垃圾数据

        Node(const T& t=T()):data(t),next(NULL)

        {

        }

    };

public:

    //构造  析构  清空

    LinkedList():head(NULL)

    {

    }

    ~LinkedList()

    {

        clear();

    }

 

    void clear()

    {

        Node *p=head;

        while (p!=NULL)

        {

            Node *q = p->next;

            delete p;//释放p所在空间

            p=q;

        }

    }

    //判断empty 求size  遍历(travel)

    bool empty()

    {

        //判断头指针是否为空 为空表示链表不存在

        return head==NULL ? true : false;

    }

    unsigned int size()

    {

        unsigned int size=0;

        Node* p =head;

        while (p!=NULL)

        {

            size++;

            pp=p->next;

        }

        return size;

    }

 

    void travel()

    {

        //利用while循环一次次的输出来,直到指针为NULL结束

        Node* p = head;

        while (p!=NULL)

        {

            cout<<p->data<<endl;

            pp=p->next;

        }

    }

    //增(insertAfter insertFront)删改查(find)

    void insertFront(const T& t)

    {

        Node* p = new Node(t);

        p->next=head;  //讲头指针所指向的地址给p的next

        head = p;       //让*p作为头

    }

    void insertAfter(const T& t)

    {

        Node *p = new Node(t);

        Node *tail = getPointer(size()-1);

        tail->next = p;

    }

    void erase(const T& t)

    {

        unsigned int position = find(t);

        Node* cur = getPointer(position);

        if (position!=0)

        {

            Nod

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,