栈与队列试题中的操作代码
Posted 樱花落舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈与队列试题中的操作代码相关的知识,希望对你有一定的参考价值。
参考资料:《算法与数据结构考研试题精析》《2018数据结构考研复习指导》,如果有误还请提出来~~~>W<
已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是:
1 new(s);s->data=x;s->next=r->next; 2 r->next=s;r=s;
将数字e压入栈s,实现入栈操作
1 typedef struct{ 2 int *base;int *top; 3 int stacksize; 4 }SqStack; 5 int Push(SqStack s,int e){ 6 if(s.top-s.base>=s.stacksize-1){ 7 s.base=(int*)realloc(s.base,(s.stacksize+1)*sizeof(int)); 8 if(!s.base){cout} 9 s.top=s.base+s.stacksize-1 10 s.stacksize=s.stacksize+1 11 } 12 *(++s.top)=e; 13 }
数组s作为两个堆栈的共享空间,请说明共享方法
1 入栈 2 if(top2-top1==1){cout} 3 case 1:top1++,space[top1]=x; 4 case 2:top2--.space[top2]=x; 5 6 出栈 7 case 1:if(top1==-1){cout} 8 top1--;return space[top1+1] 9 case 2:if(top2==N){cout} 10 top2++ return space[top2-1] 11 12 栈满 13 top2-top1==1 14 栈空 15 top1==-1&&top2==N
循环队列的数据结构
1 typedef struct node{ 2 elemtype elemcq[m]; 3 int front,rear; 4 }cqnode; 5 cqnode cq; 6 cq.front=cq.rear=0;//初始 7 cq.front=cq.rear;//空 8 (cq.rear+1)%m==cq.front;//满
循环队列不设rear,改计数器count记录结点个数
1 typedef struct node{ 2 elemtype q[m]; 3 int front,count; 4 }cqnode; 5 int empty(cqnode cq){ 6 if(cqnode.count==0){ 7 return 1; 8 } 9 return 0; 10 } 11 int Enquene(cqnode cq,elemtype x){ 12 if(cqnode.count==m){cout} 13 cq.q[(cq.front+count)%m]=x; 14 count++;return 1; 15 } 16 int Del(cqnode cq){ 17 if(count==0){cout} 18 x=cq.q[cq.front]; 19 cq.front=(cq.front+1)%m; 20 return x; 21 }
以上是关于栈与队列试题中的操作代码的主要内容,如果未能解决你的问题,请参考以下文章