频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
C++数据结构--链表
2011-08-10 13:11:39      个评论      
收藏   我要投稿

 

   用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)

        {

            Node* pre = getPointer(find(t)-1);

            pre->next = cur->next;

        }else{

            head = cur->next;

        }

        delete cur;

    }

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

    {

        Node *p=getPointer(find(target));

        p->data=t;

    }

    unsigned int  find(const T& t)

    {

        unsigned int position=0;

        Node* p = head;

        while(p!=NULL)

        {

            if (p->data==t)

            {

                return position;

            }

            pp=p->next;

            position++;

        }

        return position;

    }

    

    //取头 取尾  

    T getHead()

    {

        return head->data;

    }

    T getTail()

    {

        Node *p=getPointer(this->size()-1);

        return p->data;

    }

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

    Node* getPointer(int position)

    {

        Node* p =head;

        for(int i = 0;i<position;i++)

        {

            pp=p->next;

        }

        return p;

    }

private:

    //头指针 最重要的部分

    Node* head; 

};

 

int main()

{

}  

点击复制链接 与好友分享!回本站首页
相关TAG标签 C++ 数据结构
上一篇:水煮多态——对C++多态性的形象解释
下一篇:C++ XML解析之TinyXML篇
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站