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

2015广工数据结构答案(5)

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

return OK; }

/**********

【题目】试写一算法,在带头结点单链表的第i元素起的 所有元素从链表移除,并构成一个带头结点的新链表。 带头结点单链表的类型定义为: typedef struct LNode { ElemType data; struct LNode *next; } LNode, *LinkList; **********/

Status Split_L(LinkList L, LinkList &Li, int i)

/* 在带头结点单链表L的第i元素起的所有元素 */ /* 移除,并构成带头结点链表Li,返回OK。 */ /* 若参数不合理,则Li为NULL,返回ERROR。 */ { int j;

LinkList p,t=L;

Li=(LNode*)malloc(sizeof(LNode)); if(Li==NULL) return ERROR;

if(i<=0) {Li=NULL;return ERROR;}

if(L==NULL||L->next==NULL) {Li=NULL;return ERROR;} for(j=1;jnext;

if(t->next==NULL) {Li=NULL;return ERROR;} }

p=t->next; t->next=NULL; Li->next=p; 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 j;

LinkList p1,p2,t=L;

if(i<=0) return ERROR;

if(L->next==NULL||L==NULL) return ERROR; for(j=1;jnext;

if(t->next==NULL) return ERROR; }

p1=t->next; t->next=NULL; while(p1!=NULL){ p2=p1->next; free(p1); p1=p2; }

return OK; }

/**********

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

Status DeleteX_L(LinkList L, ElemType x)

/* 删除带头结点单链表L中所有值为x的元素, */ /* 并释放被删结点空间,返回实际删除的元素个数。*/ { //if(L==NULL||L->next==NULL) return ERROR; int i=0;

LinkList p1=L,p2;

while(p1->next!=NULL){ if(p1->next->data==x){ p2=p1->next;

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

else

p1=p1->next; }

return i; }

/**********

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

Status DeleteSome_L(LinkList L, ElemType x)

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

LinkList p1=L,p2;

while(p1->next!=NULL){ if(p1->next->datanext;

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

p1=p1->next; }

return i; }

/**********

【题目】试以顺序表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=L.length;i>1;i--){

if(L.rcd[i-1].key>L.rcd[i].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]; } } }

/**********

【题目】如下所述,改写教材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 change,t,i,j;

for(i=L.length,change=L.length;i>1&&change>1;i--){ t=change; change=1; for(j=1;j

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

{Swap(L.rcd[j],L.rcd[j+1]);change=j;}

} }

/**********

【题目】已知记录序列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; **********/

void CountSort(RcdSqList &L)

/* 采用顺序表存储结构,在函数内自行定义计数数组c */ {int c[50]={0},i,j;

for(i=1;i

if(L.rcd[j].key

RcdType *L1; if(L.length!=0)

L1=(RcdType*)malloc(L.length*sizeof(RcdType)); for(i=1;i

for(i=1;i

free(L1); }

/**********

【题目】已知某哈希表的装载因子小于1,哈希函数H(key) 为关键字(标识符)的第一个字母在字母表中的序号,处理 冲突的方法为线性探测开放定址法。试编写一个按第一个

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

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