异型链表

来源:互联网 发布:淘宝代充话费 编辑:程序博客网 时间:2024/04/29 03:59


异型链表(每个节点中类型都不相同)案例如下:

#include"mainwindow.h"

#include<QApplication>

#include<QPushButton>

#include<QLabel>

 

//异型链表

 

classbase

{

public:

   virtual void show()=0;

};

 

classnode

{

 public:

     base*p;      //数据域

     node*pNext;//指针域

};

 

voidshowall(node*phead)

{

   while(phead!=NULL)

   {

 

      phead->p->show();

      phead=phead->pNext;

   }

 

}

 

node*add(node*phead,base*p)//改变一个指针需要二级指针,否则需要返回值并赋值

{

   if(phead==NULL)

   {

       //phead=p;

       node*px=newnode;//开辟节点

       px->pNext=NULL;//最后一个节点为空

       px->p=p;//存储传过来的指针

 

       phead=px;//连接

 

       returnphead;

 

   }

   else

   {

       node*pbak=phead;//保存头结点地址

       while(phead->pNext!=NULL)//遍历到最后一个节点

       {

 

          phead=phead->pNext;

       }

       node*px=newnode;//开辟就诶点

       px->pNext=NULL;//最后一个节点为空

       px->p=p;//存储传过来的指针

 

       phead->pNext=px;//连接这个就诶点

 

       returnpbak;

   }

}

 

classbutton:publicbase

{

public:

   QPushButtonw;

   voidshow()

   {

       w.show();

   }

};

classwindow:publicbase

{

public:

   MainWindow w;

   voidshow()

   {

       w.show();

   }

};

 

class label:publicbase

{

public:

   QLabel w;

   voidshow()

   {

       w.show();

   }

};

 

intmain(intargc,char*argv[])

{

   QApplicationa(argc,argv);

   node*phead=NULL;//指针必须初四化

   buttonb1,b2,b3;

   windoww1,w2,w3;

   labell1,l2,l3;

 

   phead=add(phead,&b1);

   phead=add(phead,&w1);

   phead=add(phead,&l1);

   showall(phead);

   returna.exec();

}

 

intmain2(intargc,char*argv[])

{

   QApplicationa(argc,argv);

   node*phead;

   buttonb1,b2,b3;

   windoww1,w2,w3;

   labell1,l2,l3;

 

   nodenode1,node2,node3,node4;

   phead=&node1;

   node1.pNext=&node2;

   node2.pNext=&node3;

   node3.pNext=&node4;

   node4.pNext=NULL;//串联起来

   node1.p=&b1;

   node2.p=&w1;

   node3.p=&l1;

   node4.p=&b2;

   showall(phead);

   returna.exec();

}

 

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击