本文主要是介绍C++ 模拟栈 stacks (数据结构实验),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
非常不喜欢链表操作, 又因为 c++ STL 库里 自带 stack 函数, 但是 实验课 需要自己写, 好吧
模仿STL stack 写到一个结构体中, 这让我习惯了stack 函数的人很舒服。
(1)输入一个十进制数,利用栈操作,将该数转换成n进制数。
(2)输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
so easy、
#include <iostream>
#include <string.h>
#include <queue>
#include <stdlib.h>
#include <stack>
#include <stdio.h>
using namespace std;/*
1)输入一个十进制数,利用栈操作,将该数转换成n进制数。
(2)输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
*/
const int n =12;
const int nn=12;
typedef struct Stack{char *x;int top;int size;void InitStack(){x= (char *)malloc(n*sizeof(char));top=0;size=n;}bool emptys(){if(top==0)return true;return false;}void Push_back(char num){if(top>=size){x= (char *) realloc(x,size+nn*sizeof(char));if(!x) return;size+=nn;}x[top++]=num;}void Pop(char &num){if(top==0)return;num=x[--top];}char Gettop(){if(top==0) return -1;return x[top-1];// top 下一个}
}stacks;int main()
{stacks S;S.InitStack();int num,z;char y=0;cin>>num>>z;while(num){char xy;xy =(char) (num%z +'0');S.Push_back(xy);num/=z;}while(!S.emptys()){if(S.Gettop()<='9'&&S.Gettop()>='0')printf("%c",S.Gettop());elseprintf("%c",S.Gettop()-'0'+'A'-10);S.Pop(y);}cout<<endl;stacks ST;ST.InitStack();string str;cin>>str;int len=str.length();for(int i=0;i<=len;i++){if(str[i]=='('||str[i]=='['||str[i]=='{')ST.Push_back(str[i]);else if(str[i]==')'||str[i]==']'||str[i]=='}')ST.Pop(y);}printf(ST.emptys()?"YES\n":"NO\n");return 0;
}
这篇关于C++ 模拟栈 stacks (数据结构实验)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!