DS W8 Array & Queue

Problem ID    Title 上机
1846 A 十进制与八进制的转换(栈和队列)
1847 B |表达式求值(栈和队列) //PRN
1848 C 相同序列(栈和队列)
1849 D 回文(栈和队列)
1850 E |不同出栈情况(栈和队列)
1851 F 背包问题(栈和队列)

Problem ID    Title 课后
1852 A |队列组合(栈和队列)  // 回溯
1853 B 最小公倍数(栈和队列)
1854 C 颠倒栈(栈和队列)
1855 D 栈的基本运算(栈和队列)
1856 E 求子数组的最大和(栈和队列)
2355 F |稀疏矩阵相乘 //课本上的代码

W8上机


1846 Problem A    十进制与八进制的转换(栈和队列)

#include <stdio.h>
#include <stdlib.h>

//1846 Problem A	十进制与八进制的转换(栈和队列)
int main(){
	int t; scanf("%d",&t); printf("%o",t);} 

1847 Problem B    表达式求值(栈和队列) Link

//REF 年轻过成了秃顶
#include"stdio.h"
#include"string.h"
#define MAX_lenght 10000
typedef struct {double data[MAX_lenght]; int top;} SqStack;//数字的存入。
typedef struct {char data[MAX_lenght]; int top;} SqStackchar;//符号的存入
SqStack S;
SqStackchar Symbol;
void PUSHchar(char t){
  
   
   {
        Symbol.data[Symbol.top]=t;
        Symbol.top++;}}
        
void POPchar(char *t){
  
   
   {
        *t=Symbol.data[Symbol.top-1];
        Symbol.top--;}} 

void PUSH(double e){
  
   
   {
        S.data[S.top]=e;
         S.top++;}}
         
void POP(double *e){
  
   
   {
        *e=S.data[S.top-1];
        S.top--;}}

      
void change(char e){
    static double a,b,c; static char t;
    //如果是 + - 
    if((e=='+'||e=='-') && Symbol.top>0) {t=1;
        while(Symbol.top>0 && t!='('&&t!='['){
            POPchar(&t);
            if((t=='('||t=='[')) break;
            POP(&a); POP(&b);
            switch(t){
                case '+': PUSH(a+b);break;
                case '-': PUSH(b-a);break;
                case 'x': PUSH(a*b);break;
                case '/': PUSH(b/a);break;}
			}
        if(t=='('||t=='[') PUSHchar(t);
        PUSHchar(e);}
    else //如果是 * / 
    if((e=='x'||e=='/') && Symbol.top>0) {t=1;
        while(Symbol.top>0&&t!='('&&t!='['&&t!='+'&&t!='-'){
            POPchar(&t);
            if(t=='('||t=='['||t=='+'||t=='-') break;
            POP(&a); POP(&b);
            switch(t) {
  

猜你喜欢

转载自blog.csdn.net/qq_51314244/article/details/130068543
DS
今日推荐