关于数据结构中队列和栈的几个问题
1.intPalindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0{charc;InitStack(S);InitQueue(Q);wh...
1.int Palindrome_Test()//判别输入的字符串是否回文序列,是则返回1,否则返回0
{char c;
InitStack(S);InitQueue(Q);
while((c=getchar())!='@')
{
Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构 需不需要分配储存空间
}
while(!StackEmpty(S))
{
Pop(S,a);DeQueue(Q,b));
if(a!=b) return ERROR;
}
return OK;
}//Palindrome_Test
其中这句while((c=getchar())!='@')
{
Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构 }
在Push和EnQueue的时候为什么不需要分配储存空间?
2.原题是:是利用循环队列编写求K阶斐波那契序列中的前n+1项的算法,要求满足:fn<=max而fn+1>max,其中max为某个约定的常数(本体所使用的循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k+1,…,fn)
以下是原码:
void GetFib_CyQueue(int k,int n)//求k阶斐波那契序列的前n+1项
{
InitCyQueue(Q); //其MAXSIZE设置为k
for(i=0;i<k-1;i++) Q.base[i]=0;什么意思
Q.base[k-1]=1; //给前k项赋初值
for(i=0;i<k;i++) printf("%d",Q.base[i]);
for(i=k;i<=n;i++)
{
m=i%k;sum=0;
for(j=0;j<k;j++) sum+=Q.base[(m+j)%k];
Q.base[m]=sum; //求第i项的值存入队列中并取代已无用的第一项
printf("%d",sum);
}
}//GetFib_CyQueue
小弟不才,很多语句看不懂
请高手逐句解释~十分感谢~ 展开
{char c;
InitStack(S);InitQueue(Q);
while((c=getchar())!='@')
{
Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构 需不需要分配储存空间
}
while(!StackEmpty(S))
{
Pop(S,a);DeQueue(Q,b));
if(a!=b) return ERROR;
}
return OK;
}//Palindrome_Test
其中这句while((c=getchar())!='@')
{
Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构 }
在Push和EnQueue的时候为什么不需要分配储存空间?
2.原题是:是利用循环队列编写求K阶斐波那契序列中的前n+1项的算法,要求满足:fn<=max而fn+1>max,其中max为某个约定的常数(本体所使用的循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是所求k阶斐波那契序列中的最后k项fn-k+1,…,fn)
以下是原码:
void GetFib_CyQueue(int k,int n)//求k阶斐波那契序列的前n+1项
{
InitCyQueue(Q); //其MAXSIZE设置为k
for(i=0;i<k-1;i++) Q.base[i]=0;什么意思
Q.base[k-1]=1; //给前k项赋初值
for(i=0;i<k;i++) printf("%d",Q.base[i]);
for(i=k;i<=n;i++)
{
m=i%k;sum=0;
for(j=0;j<k;j++) sum+=Q.base[(m+j)%k];
Q.base[m]=sum; //求第i项的值存入队列中并取代已无用的第一项
printf("%d",sum);
}
}//GetFib_CyQueue
小弟不才,很多语句看不懂
请高手逐句解释~十分感谢~ 展开
1个回答
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询