加減乘除四則運算(鏈棧的應用)

2021-10-18 04:03:42 字數 1448 閱讀 3321

這裡給大家提供一種適合新手的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的儲存和運算。不考慮進製情況下,位的異或運算跟求 和 的結果一致 異或...