考试网 >> IT认证 >> 水平 >> 软件指导 >> 数据结构学习—单链表定义与实现

数据结构学习—单链表定义与实现

发布时间:2006-06-28 05:14     点击:
分页:[1] 2 3  下一页

节点类 

  #ifndef Node_H 

  #define Node_H 

  template class Node //单链节点类 

  { 

  public: 

   Type data; 

   Node *link; 

   Node() : data(Type()), link(NULL) {} 

   Node(const Type &item) : data(item), link(NULL) {} 

  Node(const Type &item, Node *p) : data(item), link(p) {} 

  }; 

  #endif 

  【说明】因为数据结构里用到这个结构的地方太多了,如果用原书那种声明友元的做法,那声明不知道要比这个类的本身长多少。不如开放成员,事实上,这种结构只是C中的struct,除了为了方便初始化一下,不需要任何的方法,原书那是画蛇添足。下面可以看到,链表的public部分没有返回Node或者Node*的函数,所以,别的类不可能用这个开放的接口对链表中的节点操作。 

  【重要修改】原书的缺省构造函数是这样的Node() : data(NULL), link(NULL) {} 。我原来也是照着写的,结果当我做扩充时发现这样是不对的。当Type为结构而不是简单类型(int、……),不能简单赋NULL值。这样做使得定义的模板只能用于很少的简单类型。显然,这里应该调用Type的缺省构造函数。 这也要求,用在这里的类一定要有缺省构造函数。在下面可以看到构造链表时,使用了这个缺省构造函数。当然,这里是约定带表头节点的链表,不带头节点的情况请大家自己思考。 

  【闲话】请不要对int *p = new int(1);这种语法有什么怀疑,实际上int也可以看成一种class。 

  单链表类 

  #ifndef List_H 

  #define List_H 

  #ifndef TURE 

  #define TURE 1 

  #endif 

  #ifndef FALSE 
分页:[1] 2 3  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有