if ( i<1 || i>L.size+1 ) { // 判断i的合法性
cerr  <<”Index  is  out  range!”<            }             if  ( L.size == MaxSize ) {      // 判断线性表满  cerr  <<”List  overflow!”<            }             for  ( int  j = L.size-1 ;  j>=i-1 ;  j-- )   // 产生插入位置  L.list[j+1] = L.list[j];             L.list[i-1] = x;                // 元素插入            L.size++;                    // 长度加1        }      (4) void  Delete( List & L, ElemType  x ) {            int  i = 0;             while  ( i                 if  ( L.list[i] == x ) {   // 删除x元素for  ( int  j = i+1;  j                 }  元素后移,                  else  i++;     // 寻找下一个x元素的位置        }    4.(1)void  Delete( LNode  * & HL, int  i ) {             if ( i<1 || HL==NULL ) {      // 判断i的合法性或空链表  cerr  <<”index  is  out  range!”<            }             LNode  * ap , * cp;             ap = NULL ;  cp = HL ;    // cp指向当前结点,ap指向其前驱结点             int  j = 1;             while  ( cp != NULL )     // 查找第i个结点                 if  ( j == i )         // 找到第i个结点  break;          // cp指向的结点即为第i个结点                  else   {            // 继续向后寻找  ap = cp; cp = cp->next; j++;                  }             if  ( cp == NULL ) {       // 没有找到第i个结点  cerr  <<”Index  is  out  range!”<            }             if  ( ap == NULL )      // 删除第1个结点(即i=1)                 HL = HL->nextl            else                  ap->next = cp->next;    // 删除第i个结点            delete  cp;                 // 释放被删除结点的空间        }      (2)void  Insert( LNode * & HL, const  ElemType  & x ) {           LNode * newptr = new  LNode;    // 申请一个新结点           if  ( newptr == NULL ) {          // 分配失败  cerr  <<”Memory  allocation  failare!”<           }            newptr->data = x;            if  ( HL == NULL || x newptr->next = HL;            // 作为新表头结点插入 HL = newptr; return;             }             // 查找插入位置             LNode  * cp = HL->next;      // 用cp指向当前结点(即待查结点)             LNode  * ap = HL;           // 用ap作为指向当前结点的前驱结点指针             while  ( cp != NULL )                  if  ( x                 else  { ap = cp;   cp = cp->next;  }  // 继续查找插入位置             newptr->next = cp;   ap->next = newptr;    // 插入新结点        }  (3)ElemType  MaxValue( LNode  * HL ) {  if  ( HL == NULL ) {    // 空表       cerr  <<”Linked  list  is  empty!”< ElemType  max = HL->data; LNode * p = HL->next;  while  ( p != NULL )  {     // 寻找最大值       if  ( max < p->data )  max = p->data;       p = p->next; }  return  max;          }  (4)int  Count( LNode * HL , ElemType  x ) { 
相关推荐: