栈与队列试题中的操作代码

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 }

 

以上是关于栈与队列试题中的操作代码的主要内容,如果未能解决你的问题,请参考以下文章

数据结构栈与队列

数据结构栈与队列

栈与队列小结

LeetCode与《代码随想录》栈与队列篇:做题笔记与总结-JavaScript版

浅析栈与队列在java中的基本应用

python - 栈与队列(只有代码)