读读下面的程序就知道了设有一个线性表 (e0, e1, …, en-2, en-1) 存放在一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原址内容置换为 (en-1, en-2, …, e1, e0)。【解答】 template<class Type> void inverse ( Type A[ ], int n ) { Type tmp; for ( int i = 0; i <= ( n-1 ) / 2; i++ ) { tmp = A[i]; A[i] = A[n-i-1]; A[n-i-1] = tmp; } }设有一个表头指针为h的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点的链接方向逆转,如下图所示。要求逆转结果链表的表头指针h指向原链表的最后一个结点。 【解答1】 template<class Type> void List<Type> :: Inverse ( ) { if ( first == NULL ) return;ListNode<Type> *p = first→link;, *pr = NULL; while ( p != NULL ) { first→link = pr; //逆转first指针pr = first; first = p; p = p→link; //指针前移 } }【解答2】template<class Type> void List<Type> :: Inverse ( ) { ListNode<Type> *p, *head = new ListNode<Type> ( ); while ( first != NULL ) { p = first; first = first→link; //摘下first链头结点p→link = head→link; head→link = p; //插入head链前端 } first = head→link; delete head; //重置first }