链表类部分操作的实现 template <class Type> void List <Type>: MakeEmpty (t 删去链表中除表头结点外的所有其他结点 ListNode<Type>*qi while( first->link !=NULL )( q=first->link; first->link=q->link; /将表头结点后第一个结点从链中摘下 delete q /释放它 last= first; 修多改表尾指针
template <class Type> void List <Type> :: MakeEmpty ( ) { //删去链表中除表头结点外的所有其他结点 ListNode<Type> *q; while ( first->link != NULL ) { q = first->link; first->link = q->link; //将表头结点后第一个结点从链中摘下 delete q; //释放它 } last = first; //修改表尾指针 } 链表类部分操作的实现
first f aox,fall q first q first first current
first q first first q q first a0 a1 a1 a2 a2 a2 current
template <class Type> int List<Type>: Length() const i //单链表的长度 ListNode<Type> *p= first->link ∥检测指针p指示第一个结点 int count =o while(pl=NULL){个结点检测 p=p->link; count++; return count
template <class Type> int List<Type> :: Length ( ) const { //求单链表的长度 ListNode<Type> *p = first->link; //检测指针p 指示第一个结点 int count = 0; while ( p != NULL ) { //逐个结点检测 p = p->link; count++; } return count; }
first-aota1十a2 0 fst十aa十a2 first faoaf-alL c=2 fs-十aaa2 3 p
first p a0 a1 a2 c = 0 first p a0 a1 a2 c = 1 first p a0 a1 a2 c = 2 first p a0 a1 a2 c = 3
template <class Type> listNode<type> List <Type>:: Find( Type value i ∥/在链表中从头搜索其数据值为vaue的结点 ListNode<Type>* p= first->link; ∥检测指针p指示第一个结点 while(p =NULL if(p->data==value) break; else p=p->link; return p; ∥p在搜索成功时返回找到的结点地址 ∥/p在搜索不成功时返回空值
template <class Type> ListNode<Type> * List <Type> :: Find ( Type value ) { //在链表中从头搜索其数据值为value的结点 ListNode<Type> * p = first->link; //检测指针p 指示第一个结点 while ( p != NULL ) if ( p->data == value ) break; else p = p->link; return p; // p 在搜索成功时返回找到的结点地址 // p 在搜索不成功时返回空值 }