数据结构学习(C++)——如何在一个链表中链入不同类型的对象[9]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 happycock 的 blog

【说明】这是测试函数,使用方法是在含有main()cpp文件头部加入#include “listtest.h”,然后调用listtest_mobject()。这是一个简单的例子,可以看出,删除这样的链表节点需要两个步骤,先delete链表节点data域里指针所指的对象,然后才能删除链表节点。同样,析构这样链表的时候,也需要注意这个问题。不然的话,你的程序运行一次内存就少一点(可能不是这样,据说操作系统在程序中止时可以回收动态内存,但后面的结论是对的),如果是个频繁调用的函数,当运行一段时间后,你的系统就瘫痪了。所以,使用这样的链表最好是派生一个新的链表类,实现相应的操作。例如这样:

class shapelist : public list<shape*>

{

public:

       bool sl_remove()

       {

              shape *p = *get();

              delete p;

              return remove();

       }

};

【闲话】不知你是不是对这样的语句shape *p = *a.next();       p->print();不甚理解,还觉得有点罗嗦。那你试试这样的语句*a.next()->print();能不能编译通过。

本文关键:数据结构 C++ 链表
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top