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


    参考资料:《算法与数据结构考研试题精析》《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 }

    循环队列带头结点和队尾指针

    1 s=new(lnode);
    2 s->data=x;s->next=p->next;p->next=s;
    3 p=s;
    4 //出队
    5 if(p->next==p){cout}
    6 s=p->next->next;p->next->next=s->next;
    7 if(s==p)p=p->next;delete(s);

    循环队列设rear,length记录结点个数

     1 typedef struct{
     2     elemType Q[m];
     3     int rear,length;
     4 }Sequene;
     5 Sequene cq;
     6 cq.length==0//
     7 cq.length==m//
     8 Sequene init(Sequene cq){
     9     cq.rear=0;
    10     cq.length=0;
    11     return cq;
    12 }
    13 Sequene en(Sequene cq,elemtype x){
    14     if(cq.length==m) return 0;
    15     else{
    16         cq.rear=(cq.rear+1)%m;
    17         cq.Q[cq.rear]=x;
    18         cq.length++;
    19     }
    20     return cq;
    21 }
    22 elemtype De(Sequene cq){
    23     if(cq.length==0) return 0;
    24     else{
    25         int front=(cq.rear-cq.length+1+m)%m;
    26         cq.length--;
    27         return cq.Q[front];
    28     }
    29 }
  • 相关阅读:
    PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率
    互联网+下PDA移动智能手持POS超市收银开单软件
    搭建免费代理池
    解析库beautifulsoup
    爬取汽车之家新闻
    请求库之requests库
    网络状态码301与302
    正向代理与反向代理
    垃圾回收机制详解
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/7747468.html
Copyright © 2020-2023  润新知