<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 閱讀(309) 評論(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;

    }


     



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

    主站蜘蛛池模板: 亚洲人成在线精品| 国产又大又粗又长免费视频| 亚洲精品一二三区| 亚洲国产精品无码一线岛国| 免费国产高清视频| 亚洲高清中文字幕免费| 免费成人在线视频观看| 无码免费又爽又高潮喷水的视频| 亚洲av乱码一区二区三区香蕉 | 亚洲中文字幕久在线| 亚洲妇熟XXXX妇色黄| 久久久久亚洲精品天堂久久久久久 | 日本一道本不卡免费| 一道本不卡免费视频| 亚洲精品无码你懂的| 亚洲另类图片另类电影| 亚洲成人在线网站| 国产成人亚洲综合无码精品| 色久悠悠婷婷综合在线亚洲| 九月婷婷亚洲综合在线| 亚洲国产成人久久综合野外| 国产美女被遭强高潮免费网站| 成人性生交大片免费看无遮挡 | 亚洲乱码一二三四区国产| 色播亚洲视频在线观看| 亚洲av无码乱码国产精品| 亚洲日韩精品无码一区二区三区| 亚洲精品国产精品乱码不卞| 全部免费a级毛片| 免费一级毛片清高播放| 免费A级毛片无码A∨男男| 国产福利免费在线观看| 免费中文字幕一级毛片| 免费大黄网站在线观| 亚洲AV无码一区二区三区国产| 午夜国产羞羞视频免费网站| 亚洲第一成人影院| 亚洲色婷婷综合开心网| 亚洲成av人在线视| 亚洲沟沟美女亚洲沟沟| 中文无码成人免费视频在线观看 |