基于QT的异质链表实例
2015-07-01 15:50
204 查看
所谓的异质链表就是的节点元素类型可以不同。本实例采用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插件制作笔记part1
- Qt获取当前时间
- vs2013编译qt程序后中文出现乱码
- Qt中解决 QLabel 点击事件通过qss+focuspolicy方法实现
- QT问题总汇
- Qt获取窗口信息
- MQTT3.1与UDP时效性分析
- Qt第三方库QCustomPlot——认识图表的各个部分
- VS2010+QT5编程之用QTabWidget写标签页(页码)的注意事项
- FlyCapture2 Qt5 MinGW Configuration
- 【QT】找茬外挂制作
- Qt中各个widget前后位置的设定(转)
- QT+opencv学习笔记一 opencv配置及Mat浅拷贝
- QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
- Qt浅谈之二十八解析XML文件
- 各种Qt的区别——Qt,Qt/Embeded,Qtopia,Qt Designer,Qt Creator
- QT文档(中文版)
- QT开发(一)环境搭建
- 实现用qt打开多个数据库
- QT软键盘无法弹出问题