正在加载图片...
∥构造函数,初始化数据与指针成员 template <class Type> LiskType>: List( const Type finishied ∥创建一个带表头结点的单链表, finished是停止建表输入的标志, ∥是所有输入值中不可能出现的数值 first last =new LisiNode<Type>( )i 建表头结点 Type walue; ListNode<Type>*p,*g,*s while walue I=finished)i 环建立各个结点 s= new LisINode<type>( ralue )i q=frst;p=frst→link; while(Pl=NULL&&p→da ∥寻找新结点插入位置 q→lik=s;s→lnk=p 在q,P间插入新结点 if(p==nUll)last=s cin >> value: template <class Type>void LisKType>:: Browse (i ∥浏览并输出链表的内容 cout<<nThe List is: \r Listooder<Type·p=fs→limk cout f(pl=at)cout<"→"; template <class Type> void List <Type>: Merge( LisK<Type>& hb) ∥将当前链表this与链表hb按逆序合并,结果放在当前链表this中。 ListNode<Type> 'pa, 'pb,'g, pa=first-link; pb =hb. fin ∥检测指针跳过表头结点 ∥结果链表初始化 while (pa I= NULL & pb I= NULL)i 当两链表都未结束时 {q=pa;p=p→lnk;} ∥从p链中摘下 从pb链中摘下 q→lik= first→link; first→link=q; ∥链入结果链的链头 }//构造函数, 初始化数据与指针成员。 template <class Type> List<Type> :: List ( const Type finishied ) { //创建一个带表头结点的单链表,finished 是停止建表输入的标志, //是所有输入值中不可能出现的数值。 first = last = new ListNode<Type>( ); //创建表头结点 Type value; ListNode<Type> *p, *q, *s; cin >> value; while ( value != finished ) { //循环建立各个结点 s = new ListNode<Type>( value ); q = first; p = first→link; while ( p != NULL && p→data <= value ) { q = p; p = p→link; } //寻找新结点插入位置 q→link = s; s→link = p; //在 q, p 间插入新结点 if ( p == NULL ) last = s; cin >> value; } } template <class Type>void List<Type> :: Browse ( ) { //浏览并输出链表的内容 cout<<"\nThe List is : \n"; ListNode<Type> *p = first→link; while ( p != NULL ) { cout << p→data; if ( p != last ) cout << "→"; else cout << endl; p = p→link; } } template <class Type> void List <Type> :: Merge ( List<Type>& hb) { //将当前链表 this 与链表 hb 按逆序合并,结果放在当前链表 this 中。 ListNode<Type> *pa, *pb, *q, *p; pa = first→link; pb = hb.first→link; //检测指针跳过表头结点 first→link = NULL; //结果链表初始化 while ( pa != NULL && pb != NULL ) { //当两链表都未结束时 if ( pa→data <= pb→data ) { q = pa; pa = pa→link; } //从 pa 链中摘下 else { q = pb; pb = pb→link; } //从 pb 链中摘下 q→link = first→link; first→link = q; //链入结果链的链头 }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有