亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 程亮.cpp

?? 一個數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計文件,VC++編寫.內(nèi)容為:重言式
?? CPP
字號:
#include<stdlib.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<math.h>



#define stack_size_normal 100
#define bianliang_max 20
#define str_max 60



int zuhe[bianliang_max];//變量的取值組合數(shù)組定義;
int N;//變量個數(shù);



//根據(jù)表達式建立的二叉樹的結(jié)點定義;
typedef struct btdnode{
char data;
struct btdnode *lchild; 
struct btdnode  *rchild;
}*bitree;



//識別表達式使用的堆棧定義,它存放的都是樹的結(jié)構(gòu);
typedef struct lnode_optr{      
struct btdnode **base;    //棧中的元素都是樹的結(jié)點結(jié)構(gòu);
struct btdnode **top;
int stacksize;
}sqstack;




//用于產(chǎn)生變量的各種取值組合;



void creatzuhe(int n)
{
int i,num=0,j=0,e;
int temp[bianliang_max];
    for(i=0;i<N;i++)
  zuhe[i]=0;
while(n)
{
  e=n%2;
  num++;
  temp[j++]=e;
  n=n/2;



}
j=j-1;
    num=N-num;
while(j>=0)
{
     e=temp[j--];
  zuhe[num++]=e;
}
}



//自底向上地根據(jù)運算符地優(yōu)先級來建立分子樹函數(shù);當邏輯表達式讀完后-子根zigen就是一棵完整的二叉樹
int k=0;//建樹的標志,k=1表示第一次建立分子樹,要對左右孩子的指針域處理
void create(bitree &zigen,bitree l,bitree r)
{
    zigen->lchild=l;
zigen->rchild=r;//分樹的鏈接
if(l&&r)
{
     if(int(l->data)>=65&&int(l->data)<=90)
  {
  l->lchild=NULL;
  l->rchild=NULL;
  }
   if(int(r->data)>=65&&int(r->data)<=90)
   {
     r->lchild=NULL;
     r->rchild=NULL;
   }



}
}

//邏輯運算符的優(yōu)先級判別;
char youxianji(char lie,char hang)
{
int    i,j;
char bijiao[7][7]={' ','|','&','~','(',')','#',
                 '|','>','<','<','<','>','>',
                       '&','>','>','<','<','>','>',                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                       '~','>','>','>','<','>','>',
        '(','<','<','<','<','=',' ',
        ')','>','>','>',' ','>','>',
        '#','<','<','<','<',' ','='};
for(i=0;i<7;i++)
   if(bijiao[0][i]==lie)
    break;
for(j=0;j<7;j++)
   if(bijiao[j][0]==hang)
    break;
   return bijiao[j][i];
}
//對操作符棧和變量堆棧的操作;
void creatstack(sqstack &st)
{

    st.base=(bitree*)malloc(stack_size_normal*sizeof(btdnode));
if(!st.base) exit(0);
st.top=st.base;
st.stacksize=stack_size_normal;
}
void push(sqstack &st,bitree e)
{
if(st.top-st.base<st.stacksize)



*st.top++=e;
else exit(0);
}
void pop(sqstack &st,bitree &e)
{
if(st.top==st.base) exit(0);
e=*--st.top;
}
void gettop(sqstack &st,bitree &e)
{
if(st.top==st.base) exit(0);
e=*(st.top-1);
}



//重言式的識別函數(shù);
void creattree(char s[],bitree &tree)
{

sqstack  variable;       //變量棧;
    sqstack  logic;         //邏輯運算符棧; 
    creatstack(variable);
creatstack(logic);
bitree logic_di,variables,logics,e,a,b,theta,kuohao;   //定義棧中的元素;
                  //theta為最后的二叉樹的根;
logic_di=(bitree)malloc(sizeof(btdnode));
if(!logic_di)  exit(0);
logic_di->data='#';
push(logic,logic_di);
   while(*s!=NULL)
{     
  if(int(*s)>=65&&int(*s)<=90)
  {  
      variables=(bitree)malloc(sizeof(btdnode));
   if(!variables)  exit(0);
   variables->data=*s;
   push(variable,variables);
    }
    else if(int(*s)>90||int(*s)<65)
    {  
      gettop(logic,e);//取運算符棧的棧頂元素進行優(yōu)先級比較
     switch(youxianji(*s,e->data))
   {
   case '<': //棧頂?shù)倪\算符優(yōu)先級低,邏輯運算符進棧
          logics=(bitree)malloc(sizeof(btdnode));
             if(!logics)  exit(0);
             logics->data=*s;
             push(logic,logics);
          break;



            case '='://脫括號并接受下一個字符;
         pop(logic,kuohao);break;
      
   case '>':pop(logic,theta);//彈出邏輯運算符
         pop(variable,a);//彈出變量
      b=NULL;
      if(theta->data!='~')
          pop(variable,b);
      //建樹的函數(shù)調(diào)用
      k=k+1;
      create(theta,b,a);
      
                     push(variable,theta);//將臨時的根作為新的變量壓入變量棧中;
         if(*s!='#'&&*s!=')') 
      {
      logics=(bitree)malloc(sizeof(btdnode));
               if(!logics)  exit(0);
               logics->data=*s;
               push(logic,logics);
      }
      else  s=s-1;
      break;
   }
    }
   s++;
}
tree=theta;
}
//根據(jù)變量的取值組合并利用邏輯表達式的性質(zhì)對樹進行求值 
int value_tree(bitree tree)
{
    if(!tree) return 0;                                       //遇到空的結(jié)點;
else if(tree->data!='|'&&tree->data!='&'&&tree->data!='~')//找到的是變量;
     return  zuhe[int(tree->data)-65];
    else if(int(tree->data)<65||int(tree->data)>90)           //找到的是運算符;
      switch(tree->data)
   {
   case '|': return(value_tree(tree->lchild)||value_tree(tree->rchild));
   case '&': return(value_tree(tree->lchild)&&value_tree(tree->rchild));
   case '~': return(!value_tree(tree->rchild));
   }



}
//用戶設(shè)定變量的一種取值;
void user()
{
int i;

cout<<"請依次輸入你的變元取值"<<endl;
for(i=65;i<65+N;i++)
{
cout<<char(i)<<" = ";
cin>>zuhe[i-65];
}
}
void main()
{
  char str[str_max],string[str_max],*pstr;
  int loop=20,choice,i=0,choose,sum;
  bitree Tree;
  
  while(loop)
  {
  pstr=str;
  i=0;
  int  SUM=0,l;  //用于累加變量的每種組合的邏輯表達式的結(jié)果;可以作為邏輯表達式類別判別的根據(jù)
  cout<<"請輸入邏輯表達式的變量的個數(shù)"<<endl;
  cin>>N;
  sum=int(pow(2,N)); //變量組合的總數(shù);
  cout<<"請輸入邏輯表達式的表達式(或用'|',與用'&'和非用'~')"<<endl;
  cin>>str;
  //重言式的正確讀取;
  for(;*pstr!=NULL;pstr++)
     if(*pstr!=' ') string[i++]=*pstr;
  string[i]='#';
  string[i+1]='\0';
  cout<<"************            請選擇你要的操作              **********"<<endl;
  cout<<"************ 1 邏輯表達式的判別(不顯示各種取值組合的結(jié)果) **********"<<endl;
  cout<<"************ 2 邏輯表達式的判別(并顯示各種取值組合的結(jié)果) **********"<<endl;
  cout<<"************ 3 邏輯表達式的求值(根據(jù)用戶的取值)           **********"<<endl;
  cout<<"請選擇你要的操作: ";
  cin>>choose;
  switch(choose)
  {
  case 1://對變量的不同組合依次調(diào)用重言式二叉樹的求值函數(shù);并判別重言式的類別;
      creattree(string,Tree);//建立重言式的二叉樹;
  
   for(loop=0;loop<sum;loop++)
   {
       
            creatzuhe(loop);//產(chǎn)生變量取值組合;
      SUM+=value_tree(Tree);
  }
  string[i]='\0';
  if(SUM==0) cout<<"邏輯表達式: "<<string<<" 是矛盾式"<<endl;
     if(SUM==sum) cout<<"邏輯表達式: "<<string<<" 是重言式"<<endl;
     if (SUM>0&&SUM<sum)cout<<"邏輯表達式: "<<string<<" 既不是重言式,也不是矛盾式"<<endl;
  break;
case 2:creattree(string,Tree);//建立重言式的二叉樹;
        cout<<"         邏輯表達式變量組合的預(yù)算結(jié)果        "<<endl;
  cout<<"---------------------------------------------"<<endl;
  printf("|       ");
  for(l=65;l<65+N;l++)
       printf("%-4c",l);
  printf("邏輯表達式的值");
  printf("              |\n");
  cout<<"---------------------------------------------"<<endl;
   for(loop=0;loop<sum;loop++)
   {
      creatzuhe(loop);//產(chǎn)生變量取值組合;
   SUM+=value_tree(Tree);
   
        printf("|       ");
   for(int h=0;h<N;h++)
    printf("%-4d",zuhe[h]);
   printf("%8d",value_tree(Tree));
            printf("                    |\n");
   cout<<"-------------------------------------------"<<endl;
  }
  string[i]='\0';
  if(SUM==0) cout<<"邏輯表達式: "<<string<<" 是矛盾式"<<endl;
  else if(SUM==sum) cout<<"邏輯表達式: "<<string<<" 是重言式"<<endl;
  else cout<<"邏輯表達式: "<<string<<" 既不是重言式,也不是矛盾式"<<endl;
  break;
case 3: creattree(string,Tree);
      user();
   cout<<"邏輯表達式的值為:"<<value_tree(Tree)<<endl;
   break;
  } 
  cout<<"是否繼續(xù)進行運算?是按1/ 否按0:";
  cin>>choice;
  if(choice==0)
    exit(0);
  loop--;




  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清影院| 一区二区高清在线| 久久综合九色综合久久久精品综合| 在线观看中文字幕不卡| 99久久精品国产精品久久| 成人国产精品免费网站| 成人黄页在线观看| 91影视在线播放| 日本久久一区二区| 欧美视频一区二区三区四区| 欧美日韩一区二区在线观看| 在线播放/欧美激情| 91精品国产欧美一区二区成人| 欧美日本一道本| 日韩一区二区在线观看| 精品国产乱码久久久久久久久| www精品美女久久久tv| 国产欧美在线观看一区| 国产精品网站在线播放| 亚洲欧美一区二区三区极速播放| 国产精品白丝在线| 亚洲电影第三页| 久久精品国产免费| 粉嫩绯色av一区二区在线观看| 99精品黄色片免费大全| 欧美午夜理伦三级在线观看| 5858s免费视频成人| 久久亚洲综合色| 中文字幕亚洲精品在线观看| 亚洲一区二区三区自拍| 免费成人在线视频观看| 国产成人综合自拍| 成人在线视频首页| 在线国产电影不卡| 欧美大片在线观看| 中文字幕一区二区三区在线不卡 | 精品视频1区2区| 日韩欧美国产综合一区 | 国产欧美一区二区精品婷婷 | 福利91精品一区二区三区| 99精品视频中文字幕| 欧美人与z0zoxxxx视频| 欧美国产日本韩| 亚洲已满18点击进入久久| 久久精品国产999大香线蕉| 99久久精品情趣| 欧美性猛片xxxx免费看久爱| 欧美精品一区视频| 一区二区三区成人在线视频| 久久国产精品99久久久久久老狼 | 成人午夜激情片| 欧美嫩在线观看| 久久久久国产精品免费免费搜索| 一区二区三区欧美视频| 狠狠色狠狠色合久久伊人| 色吊一区二区三区| 亚洲精品一区二区三区福利| 亚洲午夜三级在线| 国产一区二区电影| 欧美综合色免费| 亚洲国产精品高清| 久久电影网站中文字幕| 欧美最猛性xxxxx直播| 国产欧美一区二区三区网站| 秋霞午夜av一区二区三区| 99国产精品久久久| 久久久精品国产免大香伊| 视频一区二区三区中文字幕| 91丨九色丨黑人外教| 久久久久久综合| 免费成人美女在线观看.| 91福利精品第一导航| 国产精品欧美久久久久一区二区| 蜜臀国产一区二区三区在线播放| 欧洲av一区二区嗯嗯嗯啊| 中文无字幕一区二区三区| 青青草伊人久久| 欧美日韩在线一区二区| 中文字幕在线不卡一区二区三区| 久久99国产精品尤物| 欧美日本在线视频| 亚洲午夜国产一区99re久久| 99re热视频这里只精品| 国产欧美日韩精品一区| 久久国产尿小便嘘嘘尿| 欧美一卡二卡三卡四卡| 天堂久久一区二区三区| 欧美性生交片4| 亚洲激情成人在线| 99re热这里只有精品免费视频| 久久欧美一区二区| 国产一区二区导航在线播放| 精品国产百合女同互慰| 全国精品久久少妇| 欧美电影影音先锋| 天天色图综合网| 欧美久久免费观看| 午夜精品免费在线| 欧美日韩在线三级| 亚洲妇女屁股眼交7| 欧美日韩亚洲高清一区二区| 亚洲国产另类av| 欧洲精品中文字幕| 午夜精品福利一区二区蜜股av| 欧美视频你懂的| 偷拍一区二区三区四区| 91精品国产综合久久国产大片| 午夜久久久久久久久久一区二区| 欧美日韩国产影片| 天堂精品中文字幕在线| 欧美一区二区视频在线观看2020| 丝袜美腿一区二区三区| 51精品久久久久久久蜜臀| 老汉av免费一区二区三区| 26uuu久久天堂性欧美| 国产成人午夜片在线观看高清观看| 国产午夜精品久久| av男人天堂一区| 一区二区三区在线免费观看| 欧美午夜精品久久久久久超碰| 香蕉成人伊视频在线观看| 日韩精品一区二区三区视频| 国产精品1区二区.| 中文字幕亚洲电影| 欧美午夜一区二区三区| 日韩va欧美va亚洲va久久| 2023国产一二三区日本精品2022| 丁香网亚洲国际| 亚洲日本一区二区| 欧美伦理电影网| 国产精品一区久久久久| 亚洲欧洲性图库| 欧美日韩大陆一区二区| 国产一区二区三区免费看| 国产精品美女久久久久高潮| 色婷婷综合视频在线观看| 日本麻豆一区二区三区视频| 久久精品亚洲国产奇米99| 91蜜桃视频在线| 蜜臀国产一区二区三区在线播放 | 日本欧美一区二区三区| 久久精品亚洲国产奇米99 | 综合久久给合久久狠狠狠97色| 欧美又粗又大又爽| 极品尤物av久久免费看| 亚洲精品一二三区| 日韩欧美美女一区二区三区| 成人av在线播放网站| 亚洲国产成人高清精品| www国产精品av| 欧美自拍丝袜亚洲| 国产久卡久卡久卡久卡视频精品| 亚洲码国产岛国毛片在线| 日韩一区二区麻豆国产| 91在线视频免费91| 激情五月婷婷综合| 亚洲一区av在线| 国产婷婷一区二区| 欧美精品日韩一区| 99国产精品久久久久久久久久| 久久99日本精品| 一区二区久久久久久| 国产欧美一区二区三区沐欲| 欧美精品 日韩| 99久久精品免费看国产免费软件| 麻豆精品在线看| 亚洲国产精品天堂| 国产精品麻豆视频| 亚洲精品在线观看视频| 欧美日韩精品一区二区三区蜜桃| 成人精品免费看| 韩国精品一区二区| 丝袜国产日韩另类美女| 亚洲精品国产一区二区精华液| 国产欧美日韩另类一区| 欧美变态口味重另类| 欧美日韩的一区二区| 在线一区二区三区四区五区| 成人免费高清在线| 韩国v欧美v亚洲v日本v| 蜜桃传媒麻豆第一区在线观看| 亚洲精品乱码久久久久| 国产精品国产三级国产专播品爱网| 久久综合色8888| 日韩欧美另类在线| 欧美一区二区三区视频在线观看| 91福利区一区二区三区| 91蜜桃视频在线| 91香蕉视频在线| k8久久久一区二区三区| 国产成人aaa| 国产在线精品不卡| 国产中文字幕一区| 久久精品国产99国产| 蜜臀精品一区二区三区在线观看| 日本午夜一本久久久综合| 亚洲成a天堂v人片| 亚洲va韩国va欧美va精品| 亚洲韩国精品一区| 亚洲成a人v欧美综合天堂|