栈的基本操作

来源:互联网 发布:不用充值约爱软件 编辑:程序博客网 时间:2024/05/17 18:26
#include<iostream>#define STACK_INIT_SIZE 100//存储空间初始分配量 #define STACKINCREAMENT 10 //存储空间分配增量 using namespace std;typedef struct{    int *base;//若base=NULL,则栈不存在     int *top;    int stacksize; //当前已分配的空间 }SqStack; int InitStack(SqStack &S){//构造一个空栈     S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));      if(!S.base) return 1;       //存储分配失败     S.stacksize=STACK_INIT_SIZE;      S.top=S.base;//初始化空栈      return 0; }int StackEmpty(SqStack S)  //判断栈是否空 {      if(S.base==S.top)          return 1;      else          return 0;  }  int Push(SqStack &S,int e)  //插入元素e为新的栈顶元素 {    if(S.top-S.base>=S.stacksize){//栈满,追加存储空间     S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREAMENT)*sizeof(int));      if(!S.base) return 1;//存储分配失败     S.top=S.base+S.stacksize;      S.stacksize+=STACKINCREAMENT;    }      *(S.top)=e;      S.top++;     return 0;}  void pop(SqStack &S,int &e)  //出栈  {    if(S.base!=S.top){    S.top--;      e=*S.top;    }  }  int GetTop(SqStack S,int &e){//若栈不空,返回栈顶元素     if(S.top==S.base) return 1;    e=*(S.top-1);    return 0; }

十进制转二进制

void conversion(){//十进制转二进制    int n,e;    SqStack S;    InitStack(S);     cout<<"请输入一个十进制数"<<endl;    cin>>n;     while(n){        Push(S,n%2);        n=n/2;    }    while(!StackEmpty(S)){        pop(S,e);        cout<<e;    }}

括号匹配

#include <stdio.h>  #include <process.h>  //exit()void kuohao(){    SqStack s;//初始化空栈      InitStack(s);      char ch[100],*p;int e;      p=ch;      printf("输一个含义有()[]{}的括号表达式:\n");      gets(ch);      while(*p)      {           switch (*p)          {          case '{':          case '[':          case '(': Push(s,*p++);break;//只要是左括号就入栈          case '}':          case ']':          case ')':pop(s,e);                   if ((e=='{' && *p=='}') ||(e=='[' && *p==']') || (e=='(' && *p==')'))                   p++;                   else                   {printf("括号不匹配****!");exit(1);}                   break;          default :p++;//其他字符就后移          }      }      if (StackEmpty(s))        printf("括号匹配成功");  }
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 让小奶猫挠破皮怎么办 鬼来求食怎么办 鸟总飞到窗边叫 怎么办 一拍隔就吐奶怎么办 排不出便怎么办 狗狗拉不出屎来怎么办 花土里生蛆怎么办 土里生蛆怎么办 长棉虫怎么办 家有小虫怎么办 高血压患者怎么办 墙起碱怎么办 白门变黄怎么办 胃出血怎么办 床靠墙凉怎么办 拔完牙牙洞好臭怎么办 脸黑胸白怎么办 两岁半没戒夜奶怎么办 家有差生怎么办 怎么办补习班 有懒癌怎么办 幼猫咬人怎么办 高三很困怎么办 腿困疼怎么办 马虎怎么办 屡教不改怎么办 纸写错怎么办 没睡好想吐怎么办 小黄车没锁被骑走怎么办 走珠笔不出油怎么办 回力鞋磨脚怎么办 化完妆脸假白怎么办 脸干不出油怎么办 脸干痒怎么办 狗狗嘴臭怎么办 哈士奇太臭怎么办 狗狗太臭怎么办 猫猫兔不粘人怎么办 母兔缺奶怎么办 老兔掉毛怎么办 新裝修吊頂發霉怎么办