<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

    幫朋友做的c/c++作業:數值轉換與匹配

    Posted on 2008-03-24 18:01 Raul Gong 閱讀(316) 評論(0)  編輯  收藏 所屬分類: other
    第一個作業是:數值轉換
    -------------------------------------------------------------------

    /*堆棧的一個應用,來進行數值的轉換*/
    #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("系統無法分配空間.");
    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("開始轉換\n轉換為八進制的結果為:");
    while(k)
    {push(stack,k%8);
    k=k/8;
    }
    while(stack->top)
    printf("%d",pop(stack));
    printf("\n數值轉換結束\n");
    }

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

    運行情況:

    E:\work\workspace1016\myc\Release>myc
    請輸入需要轉換的數字:99
    開始轉換
    轉換為八進制的結果為:143
    數值轉換結束
    Done.

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

    第二個是匹配:

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

    //在g++上調試通過

    #include "stdio.h"

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

     
     
    //定義順序堆棧
    #define STACK_SIZE 100 //存儲空間初始分配量
    #define STACK_INC 10 //存儲空間分配增量
    typedef char Elem;
    typedef struct{
      Elem *base; //棧底指針
      Elem *top; //棧頂指針
      int size; //當前已分配的存儲空間
    }SqStack;
     
     
    typedef int Status;
    //創建空堆棧,棧頂指針和棧底指針相等時,棧為空
    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;
    }
     

     
     
    //進棧
    Status Push(SqStack &S,Elem e){
      if(S.top-S.base>=S.size){ //棧滿,追加存儲空間
        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;
    }
     

     
     
    //括號匹配
    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; //'('進棧
          case '[':Push(S,'[');break; //'['進棧
          case ')':{Pop(S,e);
                    if(e!='(') flag1=1; break;} //出棧,判斷是否為'('
          case ']':{Pop(S,e);
                    if(e!='[') flag1=1;break;} //出棧,判斷是否為'['
          default: break;
        }
        if(flag1) break; //出現不匹配,立即結束循環
        i++;
      }
      flag2=StackEmpty(S); //flag2判斷堆棧是否為空
      if(!flag1 && flag2) printf("括號匹配!\n");
      else printf("括號不匹配!\n");
      return OK;
    }
     

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

    }


     



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

    主站蜘蛛池模板: 午夜视频在线免费观看| 和老外3p爽粗大免费视频| 日韩在线免费视频| 亚洲av无码片在线播放| 精品国产免费人成网站| 亚洲性久久久影院| 中文字幕成人免费高清在线视频| 亚洲一区日韩高清中文字幕亚洲| 一级毛片免费视频网站| 亚洲精品成人片在线播放 | 日韩一区二区三区免费播放| 日本高清免费aaaaa大片视频| 亚洲中文字幕乱码AV波多JI| 成人黄软件网18免费下载成人黄18免费视频 | 免费高清在线爱做视频| 亚洲一区二区三区高清在线观看| 手机在线免费视频| 国产精品亚洲一区二区三区久久 | 亚洲精品乱码久久久久久久久久久久| 91视频免费观看| 久久夜色精品国产噜噜亚洲AV| 亚洲国产精品无码久久久秋霞1| a毛片在线还看免费网站| 亚洲av中文无码乱人伦在线播放 | 久久国产免费一区二区三区 | 亚洲高清视频免费| AV片在线观看免费| 曰批免费视频播放免费| 亚洲国产精品久久| 女人让男人免费桶爽30分钟| 成人久久久观看免费毛片| 亚洲成Av人片乱码色午夜| 免费影院未满十八勿进网站| 国产精品亚洲综合一区在线观看 | 亚洲视频在线观看视频| 天天摸夜夜摸成人免费视频 | 亚洲人成网站免费播放| 久久激情亚洲精品无码?V| 曰批全过程免费视频网址| 国产亚洲综合久久| 亚洲精品美女视频|