77范文网 - 专业文章范例文档资料分享平台

广工数据结构anyview答案(3)

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

/*void TheSame (LNpde &p1, ElemType x) {

if(p1->next->data != x) free(p1); else

TheSame (p1->next, x) ; } */

Status DeleteX_L(LinkList L, ElemType x)

/* 删除带头结点单链表L中所有值为x的元素, */ /* 并释放被删结点空间,返回实际删除的元素个数。*/ {

if( NULL == L->next ) return 0; int i = 0,k;

LinkList p1,p2,p3; p1 = L; p2 = p1;

p1 = p2->next;

while(p1->next != NULL) {

if(p1->data == x) {

if(p1->next == NULL) { p2->next = NULL; free(p1) ; i++;

// p2 = p1;

// p1 = p2->next; } else {

p3 = p2;

p2->next = p1->next; free(p1);

p1 = p2->next; i++;

if(p2->data == x) {

p2 = p3;

p1 = p2->next; }

} } else {

p2 = p1;

p1 = p2->next; } }

if(p1->next == NULL&&p1->data == x) {p2->next = NULL; free(p1) ; i++; }

return i; }

//71****************************************************************** /**********

【题目】试写一算法,删除带头结点单链表中所有值 小于x的元素,并释放被删结点空间。 单链表类型定义如下: typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; **********/

Status DeleteSome_L(LinkList L, ElemType x)

/* 删除带头结点单链表L中所有值小于x的元素, */ /* 并释放被删结点空间,返回实际删除的元素个数。*/ {

if( NULL == L->next ) return 0; int i = 0,k;

LinkList p1,p2,p3; p1 = L; p2 = p1;

p1 = p2->next;

while(p1->next != NULL) {

if(p1->data < x) {

if(p1->next == NULL) {

p2->next = NULL; free(p1) ; i++;

// p2 = p1;

// p1 = p2->next; } else {

p3 = p2;

p2->next = p1->next; free(p1);

p1 = p2->next; i++;

if(p2->data < x) {

p2 = p3;

p1 = p2->next; } } } else {

p2 = p1;

p1 = p2->next; } }

if(p1->next == NULL&&p1->data < x) {p2->next = NULL; free(p1) ; i++; }

return i; }

//00******************************************************************

第5章

/*03********************************************************************/

/**********

【题目】试以顺序表L的L.rcd[L.length+1]作为监视哨, 改写教材5.2节中给出的升序直接插入排序算法。 顺序表的类型RcdSqList定义如下: typedef struct { KeyType key;

... } RcdType; typedef struct {

RcdType rcd[MAXSIZE+1]; // r[0]闲置 int length; } RcdSqList; **********/

void InsertSort(RcdSqList &L) {

int i,j;

for(i = 1;i

if(L.rcd[i+1].key

L.rcd[L.length+1] = L.rcd[i+1]; j =i+1; do{ j--;

L.rcd[j+1] = L.rcd[j];

}while(L.rcd[L.length+1].key < L.rcd[j-1].key); L.rcd[j] = L.rcd[L.length+1]; } }

/*06********************************************************************/

/**********

【题目】如下所述,改写教材1.5节的冒泡排序算法: 将算法中用以起控制作用的布尔变量change改为一个整型 变量,指示每一趟排序中进行交换的最后一个记录的位置, 并以它作为下一趟起泡排序循环终止的控制值。 顺序表的类型RcdSqList定义如下: typedef struct { KeyType key; ... } RcdType; typedef struct {

RcdType rcd[MAXSIZE+1]; // r[0]闲置 int length; } RcdSqList; **********/

void BubbleSort(RcdSqList &L) /* 元素比较和交换必须调用如下定义的比较函数和交换函数:*/ /* Status LT(RedType a, RedType b); 比较:\ */ /* Status GT(RedType a, RedType b); 比较:\ */ /* void Swap(RedType &a, RedType &b); 交换 */

{

int i,change,j,k; for(i = L.length,change = 0;i>1;i--) {

change = i; for(j = 1;j

if(GT(L.rcd[j],L.rcd[j+1])) {

Swap(L.rcd[j],L.rcd[j+1]); k++;

change = j+1; }

}

while(L.rcd[change].key == L.rcd[change-1].key)

{ //用while来跳过那些相同关键字 change = change - 1; } i = change;

if(k == 0) i = 1; //当有一次比较没有交换时使i= 1结束操作

k=0; } }

/**23*********************************************************************/

/**********

【题目】已知记录序列L.rcd[1..L.length]中的关键 字各不相同,可按如下所述实现计数排序:另设数组 c[1..n],对每个记录a[i], 统计序列中关键字比它 小的记录个数存于c[i],则c[i]=0的记录必为关键字 最小的记录,然后依c[i]值的大小对序列中记录进行 重新排列。试编写算法实现上述排序方法。 顺序表的类型RcdSqList定义如下: typedef struct { KeyType key; ... } RcdType; typedef struct {

RcdType r[MAXSIZE+1]; // r[0]闲置 int length; } RcdSqList; **********/

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库广工数据结构anyview答案(3)在线全文阅读。

广工数据结构anyview答案(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/477709.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: