<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;

    }


     



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

    主站蜘蛛池模板: avtt天堂网手机版亚洲| 国产日产亚洲系列最新| a在线观看免费网址大全| 亚洲人片在线观看天堂无码| 无码一区二区三区免费视频 | 最近中文字幕免费2019| 一级成人a免费视频| 亚洲国产精品无码久久一区二区| 久久中文字幕免费视频| xvideos永久免费入口| 亚洲精品无码av中文字幕| 亚洲国产视频网站| 免费国产成人午夜电影| 怡红院免费全部视频在线视频| 亚洲无线电影官网| 国产1024精品视频专区免费| 免费无毒a网站在线观看| 亚洲精品成人无限看| 免费人成年激情视频在线观看 | 亚洲综合婷婷久久| 精品国产麻豆免费网站| 成人毛片100免费观看| 免费无毒a网站在线观看| 国产亚洲精品精品精品| 亚洲综合日韩中文字幕v在线| 国产亚洲精品不卡在线| 久久精品国产亚洲AV不卡| 亚洲国产综合精品中文字幕| jizz日本免费| 91亚洲性爱在线视频| 亚洲综合网美国十次| 亚洲人成人无码网www国产| 国产aa免费视频| 免费国产黄网站在线观看| 西西人体大胆免费视频| 免费亚洲视频在线观看| 无套内谢孕妇毛片免费看看| 午夜在线亚洲男人午在线| 国产成人亚洲精品蜜芽影院| 色www免费视频| 成人一区二区免费视频|