<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 20, comments - 16, trackbacks - 0, articles - 0
    第一個(gè)作業(yè)是:數(shù)值轉(zhuǎn)換
    -------------------------------------------------------------------

    /*堆棧的一個(gè)應(yīng)用,來進(jìn)行數(shù)值的轉(zhuǎn)換*/
    #include "stdio.h"
    #define MAXSIZE 50
    struct Stack{
    int top;
    int sLink[MAXSIZE];
    };
    struct Stack *initStack()
    {struct Stack *tem;
    if((tem=(struct Stack*)malloc(sizeof(struct Stack)))==NULL)
    {printf("系統(tǒng)無法分配空間.");
    exit(1);
    }
    else
    {tem->top=0;
    tem->sLink[tem->top]=-1;
    }
    return tem;
    }
    void push(struct Stack *stack,int item)
    {if(stack->top==MAXSIZE-1)
    {printf("棧滿");
    exit(1);
    }
    else
    {stack->top++;
    stack->sLink[stack->top]=item;
    }
    }
    int pop(struct Stack *stack)
    {int tem;
    if(stack->top==0)
    {printf("棧為空");
    exit(1);
    }
    else{
       tem=stack->sLink[stack->top];
       stack->top--;
    }
    return tem;
    }

    void coversion(int k,struct Stack *stack)
    {printf("開始轉(zhuǎn)換\n轉(zhuǎn)換為八進(jìn)制的結(jié)果為:");
    while(k)
    {push(stack,k%8);
    k=k/8;
    }
    while(stack->top)
    printf("%d",pop(stack));
    printf("\n數(shù)值轉(zhuǎn)換結(jié)束\n");
    }

    void main()/*主程序運(yùn)行,來將66轉(zhuǎn)換成為八進(jìn)制*/
    {struct Stack *stack;
    int k=0;
    printf("請(qǐng)輸入需要轉(zhuǎn)換的數(shù)字:");
    scanf("%d",&k);
    stack=initStack();
    coversion(k,stack);
    printf("Done.");
    }

    運(yùn)行情況:

    E:\work\workspace1016\myc\Release>myc
    請(qǐng)輸入需要轉(zhuǎn)換的數(shù)字:99
    開始轉(zhuǎn)換
    轉(zhuǎn)換為八進(jìn)制的結(jié)果為:143
    數(shù)值轉(zhuǎn)換結(jié)束
    Done.

     -------------------------------------------------------------------

    第二個(gè)是匹配:

    -------------------------------------------------------------------

    //在g++上調(diào)試通過

    #include "stdio.h"

    #include <iostream>
    using namespace std;
    #define OK 1
    #define ERROR 0
     

     
     
    //定義順序堆棧
    #define STACK_SIZE 100 //存儲(chǔ)空間初始分配量
    #define STACK_INC 10 //存儲(chǔ)空間分配增量
    typedef char Elem;
    typedef struct{
      Elem *base; //棧底指針
      Elem *top; //棧頂指針
      int size; //當(dāng)前已分配的存儲(chǔ)空間
    }SqStack;
     
     
    typedef int Status;
    //創(chuàng)建空堆棧,棧頂指針和棧底指針相等時(shí),棧為空
    Status CreatStack(SqStack &S)
    {
      S.base=(Elem *)malloc(STACK_SIZE*sizeof(Elem));
      S.top=S.base;
      S.size=STACK_SIZE;
      return OK;
    }
     

     
     
    //堆棧是否為空
    Status StackEmpty(SqStack S){
      if(S.top!=S.base) return ERROR;
      return OK;
    }
     

     
     
    //進(jìn)棧
    Status Push(SqStack &S,Elem e){
      if(S.top-S.base>=S.size){ //棧滿,追加存儲(chǔ)空間
        S.base=(Elem *)realloc(S.base,(S.size+STACK_INC)*sizeof(Elem));
        S.top=S.base+S.size;
        S.size+=STACK_INC;
      }
      *S.top=e;
      S.top+=1;
      return OK;
    }
     

     
     
    //出棧
    Status Pop(SqStack &S,Elem &e){
      if(S.top==S.base) return ERROR;
      S.top-=1;
      e=*S.top;
      return OK;
    }
     

     
     
    //括號(hào)匹配
    Status Bracket(SqStack &S,char *str){
      int i=0,flag1=0,flag2;
      Elem e;
      while(str[i]!='\0'){
        switch(str[i]){
          case '(':Push(S,'(');break; //'('進(jìn)棧
          case '[':Push(S,'[');break; //'['進(jìn)棧
          case ')':{Pop(S,e);
                    if(e!='(') flag1=1; break;} //出棧,判斷是否為'('
          case ']':{Pop(S,e);
                    if(e!='[') flag1=1;break;} //出棧,判斷是否為'['
          default: break;
        }
        if(flag1) break; //出現(xiàn)不匹配,立即結(jié)束循環(huán)
        i++;
      }
      flag2=StackEmpty(S); //flag2判斷堆棧是否為空
      if(!flag1 && flag2) printf("括號(hào)匹配!\n");
      else printf("括號(hào)不匹配!\n");
      return OK;
    }
     

     
     
    //主函數(shù)
    int main()
    {
      char temp,flag='y';
      while(flag=='y'){
        char str[255];
        SqStack S;
        printf("請(qǐng)輸入字符串:");
        scanf("%s",str);
        scanf("%c",&temp); //接受輸入的回車鍵
        CreatStack(S);
        Bracket(S,str);
        cout<<"你想再試一次嗎(按y繼續(xù)): "<<endl;
        scanf("%c",&flag);
        printf("\n");
      }
      printf("程序結(jié)束.\n");
    return 0;

    }


     



    -------------------------------------------------------------------

    主站蜘蛛池模板: 亚洲人成网站在线观看播放青青| 成人午夜亚洲精品无码网站| 亚洲欧洲国产精品久久| 久久久精品2019免费观看| 亚洲成人免费在线| 99视频免费播放| 亚洲国产片在线观看| 亚洲w码欧洲s码免费| 77777午夜亚洲| 国产成人免费一区二区三区| 免费大片av手机看片| 亚洲午夜未满十八勿入网站2| 免费无码又爽又刺激高潮软件 | 日韩亚洲一区二区三区| 色欲A∨无码蜜臀AV免费播 | 亚洲av中文无码乱人伦在线观看| 国产美女被遭强高潮免费网站| 国产精品亚洲二区在线| 国产成人亚洲综合无码| 久久久久免费看成人影片| 亚洲av产在线精品亚洲第一站| 日韩高清免费观看| 一级毛片人与动免费观看| 亚洲国产精品无码久久SM| 免费观看黄网站在线播放| 爱情岛论坛亚洲品质自拍视频网站 | 免费国产在线观看不卡| 亚洲免费日韩无码系列| 久久久亚洲裙底偷窥综合| 在线观着免费观看国产黄| 国产99视频精品免费视频76| 久久精品亚洲精品国产色婷 | 免费无码成人AV在线播放不卡| 456亚洲人成影院在线观| 亚洲中文字幕视频国产| 最近2019免费中文字幕视频三| 亚洲美国产亚洲AV| 亚洲国产成人高清在线观看| 在线观看免费宅男视频| 免费福利在线视频| 色九月亚洲综合网|