云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 2016广工AnyView数据结构 第1-5章答案

2016广工AnyView数据结构 第1-5章答案

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 12:59:02

Li->next=p->next; p->next=NULL; return OK; }

/**********

【题目】试写一算法,在带头结点单链表删除第i元素 起的所有元素。

带头结点单链表的类型定义为: typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; **********/

Status Cut_L(LinkList L, int i)

/* 在带头结点单链表L删除第i元素起的所有元素,并返回OK。*/ /* 若参数不合理,则返回ERROR。 */ {

int count= 0;

LinkList p= L, pt;

while(p!=NULL&&count

p=p->next; //P指向第i-1号元素 count++; }

if(i<=0||p==NULL||count>i-1||p->next==NULL) {

return ERROR; //查错 }

if(i==1) {

free(L->next); L->next=NULL; return OK; }

pt=p->next; //pt指向将第i号元素 p->next=NULL; while(pt!=NULL) {

p=pt->next; free(pt); pt=p; }

return OK;

}

/**********

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

Status DeleteX_L(LinkList L, ElemType x)

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

int count= 0;

LinkList p= L->next, pf=L, q; while(p!=NULL) { if(p->data==x) { q=p; p=p->next; free(q); pf->next=p; count++; } else {

pf=p;

p=p->next; } }

return count; }

/**********

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

} LNode, *LinkList; **********/

Status DeleteSome_L(LinkList L, ElemType x)

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

int count= 0;

LinkList p= L->next, pf=L, q; while(p!=NULL) {

if(p->data

p=p->next; free(q); pf->next=p; count++; } else { pf=p;

p=p->next; } }

return count; }

/**********

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

typedef struct {

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

void InsertSort(RcdSqList &L) {

int i,j;

for(i=0;i

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

L.rcd[L.length+1].key=L.rcd[i+1].key; j=i+1;

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

}while(L.rcd[L.length+1].key

L.rcd[j].key=L.rcd[L.length+1].key; //L.rcd[L.length+1] 需移到左边那个数(位置为[j]),判别条件为其需大于rcd[j-1]

} //即当 L.rcd[L.length+1].key > L.rcd[j-1].key 时终止 while() }

/**********

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

typedef struct {

RcdType rcd[MAXSIZE+1]; // rcd[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 = L.length-1; int change=i,j;

for(;(i>=1)&&change;i--){ change = 0; for(j=1;j<=i;j++){

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

搜索更多关于: 2016广工AnyView数据结构 第1-5章答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Li->next=p->next; p->next=NULL; return OK; } /********** 【题目】试写一算法,在带头结点单链表删除第i元素 起的所有元素。 带头结点单链表的类型定义为: typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; **********/ Status Cut_L(LinkList L, int i) /* 在带头结点单链表L删除第i元素起的所有元素,并返回OK。*/ /* 若参数不合理,则返回ERROR。 */ { int count= 0;

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com