欢迎来到天天文库
浏览记录
ID:59544334
大小:186.00 KB
页数:27页
时间:2020-11-09
《广义线性表幻灯片课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、广义线性表广义表的存储广义表的结点标志域表头指针表尾指针tag=1hptp表结点1标志域原子域表尾指针tag=0atomtp表结点2广义表结点类定义enumElemTag{ATOM,LIST};templatestructGLNode{ElemTagtag;union{Tatom;GLNode*hp;}GLNode*tp;};tag=1hptp表结点1tag=0hptp表结点2广义表的链表表示1^^A1^B0e^C1^0e1^0a0b0c^D1^1^11^E1^0a1^广义表结点类的补充定义enu
2、mElemTag{ATOM,LIST};templateclassGLNode{ElemTagtag;union{Tatom;GLNode*hp;}GLNode*tp;public:GLNode(constT&item,GLNode*t=NULL);GLNode(GLNode*h,GLNode*t);ElemTagGetType(){returntag;}T&GetValue();GLNode*Next();VoidSetValue(GLNode&x);};广义表结点类的实现template3、assT>GLNode::GLNode(constT&item,GLNode*t=NULL){tag=ATOM;atom=item;temp.tp=t;}templateGLNode::GLNode(GLNode*h,GLNode*t){tag=LIST;hp=h;tp=t;}templateT&GLNode::GetValue(){if(tag==ATOM)returnatom;elsecout<<“novalue”;return0;}template4、lassT>GLNode*GLNode::Next(){returntp;}templateVoidGLNode::SetValue(GLNode&x){tag=x.tag;tp=x.tp;if(tag==ATOM)atom=x.atom;elsehp=x.hp;}广义表类定义templateclassGList{GLNode*first;GLNode*GetNode(constT&item,Node*t=NULL);GLNode*5、GetNode(Node*h=NULL,Node*t=NULL);voidFreeGLNode(GLNode*p);voidCopyList(constGList&list);voidClearGList();public:GList(void);Glist(GLNode*p);Glist(GLNode&x,Glist&list);Glist(GList&head,Glist&tail);GList(constGList&list);~GList(void);GLNode*First6、();GLNode&Head();GLNode*Tail();voidPush(GLNode&x);//addnodexasheadvoidSetHead(GLNode&x);//replacextoheadvoidSetTail(Glist&L);};templateGlist::GList(constGList&list){CopyList(list):}templateGLNode*Glist::GetNode(constT&item,Node<7、T>*t=NULL){GLNode*p=newGLNode;p->tag=ATOM;p->atom=item;p->tp=t;returnp;}templateGLNode*Glist::GetNode(Node*h=NULL,Node*t=NULL){GLNode*p=newGLNode;p->tag=LIST;p->hp=h;p->tp=t;returnp;}templatevoidGlist::FreeGLNode(GLN8、ode*p){freep;}templateGLNode*GList::CopyList(constGList&list){GLNode*p,*q;q=this;if(list.first!=NULL){p=newGLNode;p->tag=list.first->tag;if(p.->tag==ATOM)p->atom=li
3、assT>GLNode::GLNode(constT&item,GLNode*t=NULL){tag=ATOM;atom=item;temp.tp=t;}templateGLNode::GLNode(GLNode*h,GLNode*t){tag=LIST;hp=h;tp=t;}templateT&GLNode::GetValue(){if(tag==ATOM)returnatom;elsecout<<“novalue”;return0;}template4、lassT>GLNode*GLNode::Next(){returntp;}templateVoidGLNode::SetValue(GLNode&x){tag=x.tag;tp=x.tp;if(tag==ATOM)atom=x.atom;elsehp=x.hp;}广义表类定义templateclassGList{GLNode*first;GLNode*GetNode(constT&item,Node*t=NULL);GLNode*5、GetNode(Node*h=NULL,Node*t=NULL);voidFreeGLNode(GLNode*p);voidCopyList(constGList&list);voidClearGList();public:GList(void);Glist(GLNode*p);Glist(GLNode&x,Glist&list);Glist(GList&head,Glist&tail);GList(constGList&list);~GList(void);GLNode*First6、();GLNode&Head();GLNode*Tail();voidPush(GLNode&x);//addnodexasheadvoidSetHead(GLNode&x);//replacextoheadvoidSetTail(Glist&L);};templateGlist::GList(constGList&list){CopyList(list):}templateGLNode*Glist::GetNode(constT&item,Node<7、T>*t=NULL){GLNode*p=newGLNode;p->tag=ATOM;p->atom=item;p->tp=t;returnp;}templateGLNode*Glist::GetNode(Node*h=NULL,Node*t=NULL){GLNode*p=newGLNode;p->tag=LIST;p->hp=h;p->tp=t;returnp;}templatevoidGlist::FreeGLNode(GLN8、ode*p){freep;}templateGLNode*GList::CopyList(constGList&list){GLNode*p,*q;q=this;if(list.first!=NULL){p=newGLNode;p->tag=list.first->tag;if(p.->tag==ATOM)p->atom=li
4、lassT>GLNode*GLNode::Next(){returntp;}templateVoidGLNode::SetValue(GLNode&x){tag=x.tag;tp=x.tp;if(tag==ATOM)atom=x.atom;elsehp=x.hp;}广义表类定义templateclassGList{GLNode*first;GLNode*GetNode(constT&item,Node*t=NULL);GLNode*
5、GetNode(Node*h=NULL,Node*t=NULL);voidFreeGLNode(GLNode*p);voidCopyList(constGList&list);voidClearGList();public:GList(void);Glist(GLNode*p);Glist(GLNode&x,Glist&list);Glist(GList&head,Glist&tail);GList(constGList&list);~GList(void);GLNode*First
6、();GLNode&Head();GLNode*Tail();voidPush(GLNode&x);//addnodexasheadvoidSetHead(GLNode&x);//replacextoheadvoidSetTail(Glist&L);};templateGlist::GList(constGList&list){CopyList(list):}templateGLNode*Glist::GetNode(constT&item,Node<
7、T>*t=NULL){GLNode*p=newGLNode;p->tag=ATOM;p->atom=item;p->tp=t;returnp;}templateGLNode*Glist::GetNode(Node*h=NULL,Node*t=NULL){GLNode*p=newGLNode;p->tag=LIST;p->hp=h;p->tp=t;returnp;}templatevoidGlist::FreeGLNode(GLN
8、ode*p){freep;}templateGLNode*GList::CopyList(constGList&list){GLNode*p,*q;q=this;if(list.first!=NULL){p=newGLNode;p->tag=list.first->tag;if(p.->tag==ATOM)p->atom=li
此文档下载收益归作者所有