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

2026/4/24 20:01:37

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章答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 2016广工AnyView数据结构 第1-5章答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219