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

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

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

/**********

【题目】假设将循环队列定义为:以域变量rear 和length分别指示循环队列中队尾元素的位置和内 含元素的个数。试给出此循环队列的队满条件,并 写出相应的入队列和出队列的算法(在出队列的算 法中要返回队头元素)。

本题的循环队列CLenQueue的类型定义如下: typedef struct {

ElemType elem[MAXQSIZE]; int length; int rear; } CLenQueue; **********/

Status EnCQueue(CLenQueue &Q, ElemType x)

/* 将元素x加入队列Q,并返回OK;*/ /* 若失败,则返回ERROR。 */ { if(Q.length==MAXQSIZE) return ERROR; Q.rear=(Q.rear+1)%MAXQSIZE; Q.elem[Q.rear]=x; Q.length++; return OK; }

Status DeCQueue(CLenQueue &Q, ElemType &x)

/* 将队列Q的队头元素退队到x,并返回OK;*/ /* 若失败,则返回ERROR。 */ { if(Q.length==0) return ERROR;

x=Q.elem[(Q.rear+MAXQSIZE-Q.length+1)%MAXQSIZE]; Q.length--; return OK; }

/**********

【题目】已知k阶斐波那契序列的定义为: f0=0, f1=0, …, fk-2=0, fk-1=1; fn=fn-1+fn-2+…+fn-k, n=k,k+1,…

试利用循环队列编写求k阶斐波那契序列中第 n+1项fn的算法。

本题的循环队列的类型定义如下: typedef struct {

ElemType *base; // 存储空间的基址 int front; // 队头位标

int rear; // 队尾位标,指示队尾元素的下一位置 int maxSize; // 最大长度 } SqQueue;

**********/

long Fib(int k, int n)

/* 求k阶斐波那契序列的第n+1项fn */ {

SqQueue Q; int i,j; long fn=0;

Q.base=(ElemType*)malloc(sizeof(ElemType)); Q.front=0; Q.rear=0; Q.maxSize=k; for(i=0;i

Q.rear=(Q.rear+1)%Q.maxSize; }

Q.base[Q.rear]=1;

Q.rear=(Q.rear+1)%Q.maxSize;

if(n==k-1) return 1; else if(n

for(i=k;i<=n;i++){ fn=0;

for(j=0;j

Q.base[Q.rear]=fn;

Q.rear=(Q.rear+1)%Q.maxSize; }

return fn; }

/**********

【题目】设A=(a1,…,am)和B=(b1,…,bn)均为有序顺序表, A'和B'分别为A和B中除去最大共同前缀后的子表(例如, A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大

的共同前缀为(x,y,y,z), 在两表中除去最大共同前缀后 的子表分别为A'=(x,z)和B'=(y,x,x,z))。若A'=B'=空表,

则A=B;若A'=空表,而B'≠ 空表,或者两者均不为空表, 且A'的首元小于B'的首元,则AB。试写一个比 较A和B大小的算法。(注意:在算法中,不要破坏原表A 和B,也不一定先求得A'和B'才进行比较)。 顺序表类型定义如下: typedef struct { ElemType *elem;

int length; int size;

int increment; } SqList;

**********/

char Compare(SqList A, SqList B) /* 比较顺序表A和B, */ /* 返回'<', 若A', 若A>B */ { int i=0;

while(iB.elem[i]) return '>'; i++; }

if(i==A.length&&i!=B.length) return '<'; if(i!=A.length&&i==B.length) return '>'; if(i==A.length&&i==B.length) return '='; }

/**********

【题目】试写一算法,实现顺序表的就地逆置, 即利用原表的存储空间将线性表(a1,a2,…,an) 逆置为(an,an-1,…,a1)。 顺序表类型定义如下: typedef struct { ElemType *elem; int length; int size;

int increment; } SqList;

**********/

void Inverse(SqList &L) { int i;

ElemType t;

for(i=0;i

L.elem[i]=L.elem[L.length-i-1]; L.elem[L.length-i-1]=t; } }

/**********

【题目】试对一元稀疏多项式Pn(x)采用存储量同多项式

项数m成正比的顺序存储结构,编写求Pn(x0)的算法(x0 为给定值)。

一元稀疏多项式的顺序存储结构: typedef struct { int coef; // 系数 int exp; // 指数 } Term;

typedef struct {

Term *elem; // 存储空间基址 int length; // 长度(项数) } Poly;

**********/

float Evaluate(Poly P, float x)

/* P.elem[i].coef 存放ai, */ /* P.elem[i].exp存放ei (i=1,2,...,m) */

/* 本算法计算并返回多项式的值。不判别溢出。 */ /* 入口时要求0≤e1

float a=1,f=0;

for(i=0;i

for(j=0;j

f=f+P.elem[i].coef*a; }

return f; }

/**********

【题目】假设有两个集合A和B分别用两个线性表LA和LB 表示(即:线性表中的数据元素即为集合中的成员), 试写一算法,求并集A=A∪B。 顺序表类型定义如下 typedef struct {

ElemType *elem; // 存储空间的基址 int length; // 当前长度 int size; // 存储容量

int increment; // 空间不够增加空间大小 } SqList; // 顺序表

可调用顺序表的以下接口函数:

Status InitList_Sq(SqList &L, int size, int inc); // 初始化顺序表L int ListLength_Sq(SqList L); // 返回顺序表L中元素个数

Status GetElem_Sq(SqList L, int i, ElemType &e);

// 用e返回顺序表L中第i个元素的值 int Search_Sq(SqList L, ElemType e);

// 在顺序表L顺序查找元素e,成功时返回该元素在表中第一次出现的位置,否则返回-1 Status Append_Sq(SqList &L, ElemType e); // 在顺序表L表尾添加元素e **********/

void Union(SqList &La, SqList Lb) { int i;

for(i=0;i

if(Search_Sq(La,Lb.elem[i])==-1) Append_Sq(La,Lb.elem[i]); } }

/**********

【题目】试写一算法,实现链栈的判空操作。 链栈的类型定义为: typedef struct LSNode {

ElemType data; // 数据域 struct LSNode *next; // 指针域

} LSNode, *LStack; // 结点和链栈类型 ***********/

Status StackEmpty_L(LStack S)

/* 对链栈S判空。若S是空栈,则返回TRUE;否则返回FALSE */ { if(S==NULL) return TRUE; else return FALSE; }

/**********

【题目】试写一算法,实现链栈的取栈顶元素操作。 链栈的类型定义为: typedef struct LSNode {

ElemType data; // 数据域 struct LSNode *next; // 指针域

} LSNode, *LStack; // 结点和链栈类型 ***********/

Status GetTop_L(LStack S, ElemType &e)

/* 取链栈S的栈顶元素到e,并返回OK; */ /* 若S是空栈,则失败,返回ERROR。 */ { if(S==NULL) return FALSE; e=S->data; return OK;

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

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