按关键词阅读: 答案 数据结构 AnyView 2016
*/ 若失败 , 则返回ERROR 。
*/if(Q 。
front=Q 。
rear&Q 。
tag=0) return ERROR;x=Q 。
elemQ.front;Q 。
front=(Q.front+1)MAXQSIZE;Q 。
tag=0;return OK;/*【题目】假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数 。
试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队列的算法中要返回队头元素) 。
本题的循环队列CLe 。
20、nQueue的类型定义如下:typedef struct ElemType elemMAXQSIZE;
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.elemQ 。
rear=x;Q.length+;
return OK;Status DeCQueue(CLenQueue Q, ElemType x)/* 。
21、 将队列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, , fk2=0 ,fk1=1;fn=fn-1+fn-2+fnk ,n=k,k+1 , 试利用循环队列编写求k阶斐波那契序列中第n+1项fn的算法 。
本题的循环队列的类型定义如下:typedef struct ElemType *base;
/ 存储空间的基址int fron 。
22、t; / 队头位标int rear;
/ 队尾位标,指示队尾元素的下一位置int maxSize; / 最大长度 SqQueue;*/long Fib(int k, int n)/* 求k阶斐波那契序列的第n+1项fn /if(kB */int i=0;
while((iB.elemi)return ;
elsereturn ;/*【题目】试写一算法 , 实现顺序表的就地逆置 , 即利用原表的存储空间将线性表(a1 , a2 , an)逆置为(an,an-1, , a1) 。
顺序表类型定义如下:typedef struct ElemType elem;int length;
int size;
int increment;
。
23、 SqList;
*/void Inverse(SqList L)ElemType temp;
if(L.elem!=NULLL.length!=1)for(int i=0;
iL.length/2;i+)temp=L.elemi;L 。
elemi=L.elemL.length-i1;L 。
elemL.lengthi1=temp;
/*【题目】试对一元稀疏多项式Pn(x)采用存储量同多项式项数m成正比的顺序存储结构 , 编写求Pn(x0)的算法(x0为给定值) 。
一元稀疏多项式的顺序存储结构:typedef struct int coef;
/ 系数int exp; / 指数 Term;
typedef str 。
24、uct Term *elem;
/ 存储空间基址int length;
/ 长度(项数) Poly;
*/float Evaluate(Poly P, float x)/ P.elemi.coef 存放ai, / P 。
elemi 。
exp存放ei (i=1,2, 。
.,m) / 本算法计算并返回多项式的值 。
不判别溢出 。
/ 入口时要求0e1e2. 。
data;
return OK;/*【题目】试写一算法 , 实现链队列的判空操作 。
链队列的类型定义为:typedef struct LQNode ElemType data;
struct LQNode next;
LQNode ,QueuePtr;
/ 结点和 。
25、结点指针类型typedef struct QueuePtr front; / 队头指针QueuePtr rear; / 队尾指针 LQueue;
/ 链队列类型*/Status QueueEmpty_LQ(LQueue Q)/ 判定链队列Q是否为空队列 。
*/ 若Q是空队列 , 则返回TRUE , 否则FALSE 。
*/if(Q 。
front!=NULL|Q.frontnext!=NULL)return FALSE;return TRUE;
/*【题目】试写一算法 , 实现链队列的求队列长度操作 。
链队列的类型定义为:typedef struct LQNode ElemType data;
struct LQNo 。
26、de next;
LQNode, *QueuePtr;
/ 结点和结点指针类型typedef struct QueuePtr front;
/ 队头指针QueuePtr rear;
/ 队尾指针 LQueue; / 链队列类型*/int QueueLength_LQ(LQueue Q)/ 求链队列Q的长度并返回其值 */ if(Q 。
front=NULL&Q.front-next=NULL)return 0;
int len= 0;
LQNode * p=Q 。
front;while(p!=NULL)p=pnext;
len+;return len;/*【题目】假设以带头结点的循环链表表示队列 , 并且只设 。
27、一个指针指向队尾元素结点(注意不设头指针) , 试编写相应的队列初始化、入队列和出队列的算法 。
带头结点循环链队列CLQueue的类型定义为:typedef struct LQNode ElemType data;struct LQNode *next; LQNode, CLQueue;
*/Status InitCLQueue(CLQueue rear) / 初始化空队列 rear = (CLQueue)malloc(sizeof(LQNode);if(!rear) return FALSE;
rear - next = rear;return TRUE; Status EnCLQueue(CLQue 。
28、ue rear ,ElemType x) / 入队 CLQueue head,p;
head = rear - next;p = (CLQueue)malloc(sizeof(LQNode));if(!p)return FALSE; p - data = https://www.renrendoc.com/paper/x;
p - next = head;
rear next = p; rear = p;
return TRUE;Status DeCLQueue(CLQueue &rear ,ElemType x) / 出队 CLQueue head , p;
来源:(未知)
【学习资料】网址:/a/2021/0321/0021742210.html
标题:2016|2016广工AnyView数据结构第1-5章答案( 三 )