⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p79_81.cpp

📁 包含常见的数据结构的类和函数
💻 CPP
字号:
		#include <stdio.h>		enum Boolean { False, True };		template <class Type> class List;					//链表类的前视定义		template <class Type> class ListIterator;				//链表结点类的前视定义		template <class Type> class ListNode {					//链表结点类的类声明		friend class List <Type>;							//友元		friend class ListIterator <Type>;					//友元		public:		   ListNode ( const Type value ) : data (value), link (NULL) { }		   //………		private:		   Type data;		   ListNode<Type> *link;		};		template <class Type> class List {					//链表类的类声明		public:		   friend class ListIterator<Type>;		   List ( const Type value) { last =first = new ListNode<Type> (value) ; }	//构造函数		   void Add ( const Type value ) ;		   //………		private:		   ListNode<Type> *first, *last;		};		template <class Type> class ListIterator {				//链表游标类的类声明		public:		   ListIterator ( const List<Type> & l ) : list (l), current (l.first) { }		   Boolean NotNull ( );		   Boolean NextNotNull ( );		   Type First ( );		   Type Next ( );		private:		   const List<Type> & list;						//引用一个已存在的链表		   ListNode<Type> *current;						//指向链表中的一个结点		}		template <class Type> Boolean ListIterator<Type>::NotNull ( ) {		//检查链表中当前元素是否非空		   if ( current != NULL ) return True; 					//链表当前结点指针非空		   else return False;		}		template <class Type> Boolean ListIterator<Type>::NextNotNull ( ) {		//检查链表中下一元素是否非空		   if ( current != NULL && current->link != NULL ) return True;		   else return False;		}		template <class Type> Type ListIterator<Type>::First ( ) {		//返回指向链表中表头结点的指针		   Type temp;		   if ( list.first->link != NULL ) {		       current = list.first;		       temp = current->data;		   }		   else { current = NULL; temp = 0;}		   return temp;		}		template <class Type> Type ListIterator<Type>::Next ( ) {		//返回指向链表中下一个结点的指针		   Type temp;		   if ( current != NULL && current->link != NULL ) {		      current = current->link;		      temp = current->data;		   }		   else { current = NULL; temp = 0;}		   return temp;		}		int sum ( const List<int> &l ) {		   ListIterator<int> li (l);							//定义对象li为操作链表对象l的游标对象		   if ( ! li.NextNotNull ( ) ) return 0;					//空链表, 返回0		   int retvalue = li.First ( );						//取得第一个元素的值		   while ( li.NextNotNull ( ) ) retvalue += li.Next ( );		//看是否下一个结点存在,若有, 累加		   return retvalue;		}		template <class Type> void List<Type>::Add(const Type value) {		   last->link = new ListNode<Type> (value);                   last = last->link;		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -