码迷,mamicode.com
首页 > 其他好文 > 详细

基于QT的异质链表实例

时间:2015-07-01 18:28:26      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:异质链表

所谓的异质链表就是的节点元素类型可以不同。本实例采用C++抽象类和多态实现。

#include <QApplication>
#include<QPushButton>
#include<QLabel>
// 基类
class base
{
public:
  virtual void show()=0;
};

//异质链表
class LinkList
{
private:
    struct Node
    {
        base *pb;//数据域指针
        Node *next;
    };
    Node *phead;
public:
    void addNode(base *pb)
    {
        Node *pnode = new Node;
        pnode->pb=pb;
        pnode->next=NULL;
        if(phead==NULL)
        {
            phead=pnode;

        }
        else//采用头插法
        {
          pnode->next=phead;
          phead=pnode;
        }
    }
    void clearall()
    {

        if(phead==NULL)
        {
            return;
        }
         Node *pnode=phead;
         Node *ptmp;
         while(pnode!=NULL)
         {
            ptmp=pnode;
            pnode=pnode->next;
            delete ptmp;
         }
         phead=NULL;
    }

    void showall()
    {
         if(phead==NULL)
         {
             return;
         }
         Node *pnode=phead;
         while(pnode!=NULL)
         {
            pnode->pb->show();
            pnode=pnode->next;
         }
    }
    LinkList()
    {
        phead=NULL;
    }
    ~LinkList()
    {
        this->clearall();
    }

};

class MyButton:public base
{
private:
    QPushButton bt;
public:
    void show()
    {
        bt.setText("button");
        bt.show();
    }
};

class MyLabel:public base
{
private:
    QLabel label;
public:
    void show()
    {
        label.setText("label");
        label.show();
    }
};

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);

   LinkList list;
   MyLabel label;
   MyButton btn;

   list.addNode(&label);
   list.addNode(&btn);

    list.showall();
    return a.exec();
}
运行结果:


技术分享

版权声明:欢迎转载,如有不足之处,恳请斧正。

基于QT的异质链表实例

标签:异质链表

原文地址:http://blog.csdn.net/huangshanchun/article/details/46711153

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!