当前位置: 首页 > news >正文

【考研复习】24王道数据结构课后习题代码|第3章栈与队列

文章目录

  • 3.1 栈
  • 3.2 队列
  • 3.3 栈和队列的应用

3.1 栈

在这里插入图片描述

int symmetry(linklist L,int n){char s[n/2];lnode *p=L->next;int i;for(i=0;i<n/2;i++){s[i]=p->data;p=p->next;}i--;if(n%2==1) p=p->next;while(p&&s[i]==p->data){i--;p=p->next;}if(i==-1) return 1;else return 0;
}

在这里插入图片描述

typedef struct {int stack[Max];int top[2];
}stk;
stk s;
int push(int i, int x){if(i<0||i>1){cout<<"no stack"<<endl;return -1;}if(s.top[1]-s.top[0]==1){cout<<"full stack"<<endl;return -1;}switch (i){case 0:s.stack[++s.top[0]]=x; return 1;break;case 1:s.stack[++s.top[1]]=x; return 1;break;}
}
int pop(int i){if(i<0||i>1){cout<<"no stack"<<endl;return -1;}switch (i){case 0:if(s.top[0]==-1){cout<<"empty stack"<<endl;return -1;}else{return s.stack[s.top[0]--];}break;case 1:if(s.top[0]==Max){cout<<"empty stack"<<endl;return -1;}else{return s.stack[s.top[1]--];}break;}
}

3.2 队列

在这里插入图片描述

#define Maxsize 10
typedef struct{int data[Maxsize];int rear,front,tag;
}SqQueue;
int EnQueue(SqQueue &Q, int x){if(Q.front==Q.rear&&Q.tag==1) return 0; //队列满了Q.data[Q.rear]=x;Q.rear=(Q.rear+1)%Maxsize;Q.tag=1;return 1;
}
int DeQueue(SqQueue &Q, int x){if(Q.front==Q.rear&&Q.tag==0) return 0; //队空x=Q.data[Q.front];Q.front=(Q.front+1)%Maxsize;Q.tag=0;return 1;
}

在这里插入图片描述
伪代码

void inverse(stack &s, queue &q){while(!queueempty(q)){x=dequeue(q);push(s,x);}while(!stackempty(s)){pop(s,x);enqueue(q,x);}
}

在这里插入图片描述

int enqueue(stack &s1, stack &s2, int e){if(!(stackoverflow(s1))){push(s1,e);return 1;}if(stackoverflow(s1)&&!(stackempty(s2))){cout<<" stack is overflow. "<<endl;return 0;}if(stackoverflow(s1)&&stackempty(s2)){while(!(stackempty(s1))){pop(s1,x);push(s2,x);}}push(s1,e);return 1;
}
void dequeue(stack &s1,stack &s2, int &x){if(!stackempty(s2)){pop(s2,x);}else if(stackempty(s1)){cout<<" stack is empty"<<endl;}else{while(!stackempty(s1)){pop(s1,x);push(s2,x);}pop(s2,x);}
}
int queueempty(stack s1,stack s2){if(stackempty(s1)&&stackempty(s2)){return 1;}else return 0;
}

在这里插入图片描述

3.3 栈和队列的应用

在这里插入图片描述

#include <iostream>
#include <stack>
using namespace std;
bool check(char str[]){stack <char> sck; int i=0;char temp;while(str[i]!='\0'){if(str[i]=='('||str[i]=='{'||str[i]=='[') {sck.push(str[i]);break;}else if(str[i]==']'){temp = sck.top();sck.pop();if(temp!='[') return false;}else if(str[i]==')'){temp = sck.top();sck.pop();if(temp!='(') return false;}else if(str[i]=='}'){temp = sck.top();sck.pop();if(temp!='{') return false;}}if(sck.empty()) return true;return false;
}
int main(){char *str=(char*)"()[](}{}()";cout<<str<<endl;if(!check(str)) cout<<"no !!"<<endl;else cout<<"yes!!1"<<endl;return 0;}

在这里插入图片描述

#include <iostream>
#include <stack>
using namespace std;
void train_arrange(char *train){stack <char> sck;char *p=train,*q=train,t;while(*p){if(*p=='H') {sck.push(*p);}else{*(q++)=*p;}p++;}while (!sck.empty()){t = sck.top();sck.pop();*(q++)=t;}}
int main()
{char str[11]="HSHSHHHSHS";train_arrange(str);cout<<str<<endl;return 0;
} // namespace std;

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#define maxsize 100
using namespace std;
double p(int n, double x){struct stack{int no;double val;}st[maxsize];int top=-1,i;double fv1=1,fv2=2*x;for(i=n;i>=2;i--){top++;st[top].no=i;}while(top>0){st[top].val=2*x*fv2-2*(st[top].no-1)*fv1;fv1=fv2;fv2=st[top].val;top--;}if(n==0){return fv1;}return fv2;
}
int main(){
double ans1=p(1,1.9);cout<<ans1<<endl;
}

在这里插入图片描述

http://www.lryc.cn/news/121224.html

相关文章:

  • java中excel文件下载
  • 29 | 广州美食店铺数据分析
  • fastApi基础
  • Mysql整理二 - 常见查询语句面试题(附原表)
  • Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本
  • Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题
  • 持续输出:自媒体持续输出文字内容、视音频创作(视频课程、书籍章节)
  • 篇十七:备忘录模式:恢复对象状态
  • 初识mysql数据库之图形化界面
  • APP外包开发的H5开发框架
  • 高性能跨平台网络通信框架 HP-Socket v5.9.3
  • Vue3.2+TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式,最后教给大家自己封装一个时间hooks,直接复用
  • 05 mysql innodb page
  • 记录一次electron打包提示文件找不到的解决方法
  • 《大型网站技术架构》第二篇 架构-高可用
  • VS Code 使用cnpm下载包失败
  • 【图像分类】CNN + Transformer 结合系列.4
  • 分享一下利用Vue表单处理实现复杂表单布局
  • SAP Fiori 问题收集
  • econml双机器学习实现连续干预和预测
  • 《甲午》观后感——GPT-3.5所写
  • Java技术整理(6)—— 微服务篇
  • 途乐证券-新股行情持续火爆,哪些因素影响首日表现?
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)
  • 基于weka手工实现KNN
  • Lua 闭包
  • Java技术整理(1)—— JVM篇
  • bug解决:AssertionError: No inf checks were recorded for this optimizer.
  • Django笔记之数据库查询优化汇总
  • JVM内存区域