在带表头结点的单链表 第一个结点前插入新结点 newnoce x newnode last first a0 first (非空表) 插入前) (空表) 插入前) newnode x p、 newnode first first last (插入后) (插入后) a (b) newnode-→link= p-link; if (p-link ==NULL) last newnode p→→link= newnode;
在带表头结点的单链表 第一个结点前插入新结点 newnode→link = p→link; if ( p→link ==NULL ) last = newnode; p→link = newnode;
从带表头结点的单链表中删除第一个结点 first- 01 c0 删除前) 删除前) last q→∧ a 删除后) 删除后 (a) last q=p→link p-link=g-link, delete g: if (p-link==NULL last=P;
q = p→link; p→link = q→link; delete q; if ( p→link == NULL ) last = p; 从带表头结点的单链表中删除第一个结点
单链表的类模板 类模板将类的数据成员和成员函数设 计得更完整、更灵活。 类模板更易于复用。 在单链表的类模板定义中,增加了表 头结点
单链表的类模板 类模板将类的数据成员和成员函数设 计得更完整、更灵活。 类模板更易于复用。 在单链表的类模板定义中,增加了表 头结点
用模板定义的单链表类 template <class Type> class List; template <class Type> class ListNode i friend class List<TyPe>,∥结点数据 Type data; Listnode<Type>*ink;∥结点链接指针 ublic ListNode o; /链表结点构造函数 ListNode( const Type& item
用模板定义的单链表类 template <class Type> class List; template <class Type> class ListNode { friend class List<Type>; Type data; //结点数据 ListNode<Type> *link; //结点链接指针 public: ListNode ( ); //链表结点构造函数 ListNode ( const Type& item );
ListNode<type> * NextNode o i return link; j void InsertAfter( lListNode<Type> p); 在当前结点后插入结点P ListNode< Type>*GetNode( const Type& item, ListNode<Type> anext ) 创建数据为item,指针为nex的新结点 ListNode<Type> *RemoveAfter o /_下当前结点的下一结点
ListNode<Type> *NextNode ( ) { return link; } void InsertAfter ( ListNode<Type> *p ); //在当前结点后插入结点p ListNode<Type> *GetNode ( const Type& item, ListNode<Type> *next ); //创建数据为item,指针为next的新结点 ListNode<Type> *RemoveAfter ( ); //摘下当前结点的下一结点 };