单链表广义表的几种节点表示方法


//复合类表示法class List;class LinkNode{friend class List;private:int data;LinkNode *next;};class List{public://一些公共操作 private:LinkNode *first;};

//内嵌类表示法:
class List
{
public:
private:
	class LinkNode
	{
	public :
		int data;
		LinkNode *next;
	};
	LinkNode *first;
};

基类和派生类表示法:

class LinkNode
{
protected:
    int data;
    LinkNode *next;

};
class List:public LinkNode
{
public:

private:
    LinkNode *first;
};
//使用struct定义LinkNode类

struct LinkNode
{
	int data;
	LinkNode *next;
};
class List
{
public:
private:
	LinkNode *first;
};



 /* 标志域utype 用来表明该节点是什么类型,=0,是广义表专用的附加头节点;=1是原子节点。;
  =2是子表节点 。
  信息域 info 不通类型的结点在这个域中存放的内容不容。当utype=0时,该信息域存放引用计数ref,
  当utype=1时,该信息域存放数据值value,当utype=2时,该信息域存放指向子表节点的指针hlink
  尾指针域tlink 当utype=0时,该指针域存放指向该表头元素结点的指针;当utype!=0时,该指针域存放同一层下
  一个表结点的地址,
  */
template<class T>
struct Items
{
	int utype;  //=0/1/2;
	union
	{
		int ref;			 //utype=0 附加头节点,存放引用计数
		T value;             //utype=1 存放数值
		GenListNode<T>*hlink               //utype=2
	}info;
	Items():utype(0),info.ref(0){}
	Items(Items<T>&RL){utype=RL.utype;info=RL.info;}
};
template<class T>
struct GenListNode
{
pulic:
	GenListNode():utype(0),tlink(NULL),info.ref(0){}
	GenListNode(GenListNode<T>&RL)
	{
		utype=RL.utype;
		tlink=RL.tlink;
		info=RL.info;
	}
private:
	int utype;
	GenListNode<T>*tlink;
	union
	{
		int ref;
		T value;
		GenListNode<T>*hlink;
	}info;
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值