数据结构复习题习题全六章含答案

发布时间 : 星期一 文章数据结构复习题习题全六章含答案更新完毕开始阅读

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 || xdata ) { // 空表 或 x小于表头结点,

newptr->next = HL; // 作为新表头结点插入 HL = newptr; return;

}

// 查找插入位置

LNode * cp = HL->next; // 用cp指向当前结点(即待查结点)

LNode * ap = HL; // 用ap作为指向当前结点的前驱结点指针

while ( cp != NULL )

if ( xdata) break; // 找到插入位置

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 ) {

联系合同范文客服:xxxxx#qq.com(#替换为@)