当前位置:首页 > 数据结构复习题习题全六章含答案
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 ) {
共分享92篇相关文档