這裡給大家提供一種適合新手的c語言四則運算的實現(應用中綴轉字尾、鏈棧)。
#include
#include
#include
#include
typedef struct nodelinkstack;
typedef struct nodelinkstack;
/建立空棧/
linkstack *initstack()
linkstack *initstack()
/判斷棧是否為空/
bool empty(linkstack *s)
bool empty(linkstack *s)
/入棧/
void push(linkstack *s,int element)
void push2(linkstack *s,char element)
char pop2(linkstack *s)
else
return e;
}/出棧/
int pop(linkstack *s)
else
return e;
}char gettop(linkstack s)//取棧頂元素(但不出棧)
else
}int prio(char op)//比較算術符號的優先順序
else if(op==』+』||op==』-』)else if(op==』(』)
return priority;
}void middle_transform_behind(char a,int length)//將中綴表示式轉化為字尾表示式
if(count!=1)
printf("%d 「,number);
number=0;count=0;
}else if((a+i)==』+』||(a+i)』-』||*(a+i)』』||(a+i)』/』||*(a+i)』(』)else if((a+i)==』』||(a+i)==』/』)else if((a+i)』+』||*(a+i)』-』)
push2(head,(a+i));
}else if((a+i)』(』)
}else if((a+i)』)』)
s=pop2(head);}}
}while(!empty(head))
printf(」\n");
}int main(int argc,char const ar**)
if(count!=1)
push(top,num);
num=0,count=0;
}else if((arr[i]=='+'||arr[i]=='-'||arr[i]=='*'||arr[i]=='/')&&!empty(top))else
} }}int final_result=pop(top);
printf("最終結果為:%d",final_result);
位運算實現加減乘除四則運算
只用邏輯運算實現加法 int add int a,int b int sumtemp a b int carry a b 1 return add 只用邏輯運算實現減法 int minus int a,int b 邏輯運算實現除法 低效 int div int a,int b return resu...
位運算實現加減乘除四則運算
目錄加法 減法 乘法 除法計算機最基本的操作單元是位元組 byte 乙個位元組由8個位 bit 組成,乙個位只能儲存乙個0或1,其實也就是高低電平。無論多麼複雜的邏輯 龐大的資料 酷炫的介面,最終體現在計算機最底層都只是對0101的儲存和運算。不考慮進製情況下,位的異或運算跟求 和 的結果一致 異或...
位運算實現加減乘除四則運算
目錄 加法減法 乘法除法 計算機最基本的操作單元是位元組 byte 乙個位元組由8個位 bit 組成,乙個位只能儲存乙個0或1,其實也就是高低電平。無論多麼複雜的邏輯 龐大的資料 酷炫的介面,最終體現在計算機最底層都只是對0101的儲存和運算。不考慮進製情況下,位的異或運算跟求 和 的結果一致 異或...