溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

逆波蘭計算器的完整C代碼怎么寫

發(fā)布時間:2021-10-14 14:26:56 來源:億速云 閱讀:178 作者:柒染 欄目:編程語言

這篇文章給大家介紹逆波蘭計算器的完整C代碼怎么寫,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

/* 逆波蘭計算器 */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

typedef double Elemtype;

typedef struct StackNode {
	Elemtype data;
	struct StackNode *next;
}StackNode, *pStackNode;

typedef struct LinkStack {
	pStackNode top;
	int count;
}LinkStack, *pLinkStack;

//鏈棧創(chuàng)建和初始化
pLinkStack InitStack ( void )
{
	pLinkStack s = (pLinkStack)malloc(sizeof(LinkStack));
	s -> top = NULL;
	s -> count = 0;
	return s;
}

//鏈棧是否為空
int StackEmpty( pLinkStack s )
{
	return (s -> top == NULL ? 1 : 0 );
}

//鏈棧入棧
void Push( pLinkStack s, Elemtype e )
{
	pStackNode p = (pStackNode)malloc(sizeof(StackNode));
	p -> data = e;
	
	if( s -> top != NULL )  
		p -> next = s -> top;
	s -> top = p;
	s -> count++;
}

//鏈棧出棧
Elemtype Pop( pLinkStack s )
{
	Elemtype temp;
	pStackNode p;
	if( StackEmpty(s) )
		exit(0);

	temp = s -> top -> data;
	p = s -> top;
	s->top = s->top->next;
	free(p);
	s->count--;
	return temp;
}

int main()
{
	char c;
	Elemtype temp1, temp2;
	char str[20];
	int i=0;
	pLinkStack s = InitStack();
	printf("請輸入表達式 :\n");
	
	scanf("%c", &c);
	while( c != '\n' ) {

		while( isdigit(c) || c=='.' ) {//過濾數(shù)字
			str[i++] = c;
			str[i] = '\0';
			if( i>=20 )
				printf("出錯: 輸入的數(shù)據(jù)過大!\n");
			scanf("%c", &c);
			if( c == ' ' ) {
				Push( s, atof(str));
				i = 0;
				break;
			}
		}

		switch( c ) {
		case '+':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 + temp1 );
			break;
			
		case '-':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 - temp1);
			break;

		case '*':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 * temp1);
			break;

		case '/':
			temp1 = Pop( s ) ;
			temp2 = Pop( s ) ;
			Push( s, temp2 / temp1);
			break;
		default:
			break;
		}
		scanf("%c", &c);
	}

	printf("結(jié)果為: %f\n", Pop(s));

	return 0;
}

關于逆波蘭計算器的完整C代碼怎么寫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI