Algorithm 一切始於ADT 表示式計算

2022-09-12 15:24:23 字數 2056 閱讀 8100

sedgewick的《演算法》和allen weiss的《演算法和資料結構》,這兩本比較優秀的演算法入門教材第一課都是adt(abstract data type).無疑,adt非常有用且非常有趣的知識。剛好最近學校的c語言課程給了一道這樣的題目..

1.問題描述

從標準輸入中讀入乙個整數算術運算表示式,如5 - 1 * 2 * 3 + 12 / 2 / 2  = 。計算表示式結果,並輸出。

要求:1、表示式運算子只有+、-、*、/,表示式末尾的』=』字元表示表示式輸入結束,表示式中可能會出現空格;

2、表示式中不含圓括號,不會出現錯誤的表示式;

3、出現除號/時,以整數相除進行運算,結果仍為整數,例如:5/3結果應為1。

暴力解也不是不可以,但如果使用棧的話,這道題就會變得簡單一些..

2.思路

利用棧將中綴式轉換成字尾表示式,然後再次利用棧對字尾式進行計算

3.實現

#include #include 

#include

#include

intlength;

struct

ele ;

int postfixtoresult(struct ele *t);

void infix2postfix(struct ele *t);

int ele_strlen(struct ele *t);

void getrank(int *rank,char

op);

struct ele pop(struct ele *stack,struct ele **head);

void push(struct ele **head,struct

ele x);

int isempty(struct ele *stack,struct ele **head);

void to_ele_string(char *t,struct ele *ele_t);

intmain()

void to_ele_string(char *t,struct ele *ele_t)

}temp[k]='\0'

; ele_t[m].op = 0

; ele_t[m].num =atoi(temp);

ele_t[m].end_flag = 1

; }

int postfixtoresult(struct ele *t)

temp.op=0

; temp.num=r;

temp.end_flag=0

; push(&head,temp);}}

return pop(stack,&head).num;

}void infix2postfix(struct ele *t)

int length=ele_strlen(t);

int head_rank=0,p_rank=0

;

for(i=0;i)

else

push(&head,t[i]);}}

}while(!isempty(stack,&head))

out_buf[k++]=pop(stack,&head);

out_buf[k-1].end_flag=1

; memcpy(t,out_buf,

100*sizeof(struct

ele));

}int ele_strlen(struct ele *t)

void getrank(int *rank,char

op)

}int isempty(struct ele *stack,struct ele **head)

void push(struct ele **head,struct

ele x)

struct ele pop(struct ele *stack,struct ele **head)

return

null

; }

linux一切皆是檔案 LINUX一切皆檔案

只要用過linux的筒子,或者保守點說接觸到一些linux思想的同志肯定聽說過這樣一句話,在linux下,一切皆是檔案 不錯,今天walfred將在快速上手linux裝置驅動這一塊,談談linux的裝置也符合 一切皆是檔案 的思想在linux裝置驅動模型應用。如果你不理解linux裝置模型,請看下面...

EQ決定一切

eo是 情緒智商 的簡稱,由美國哈佛大學心理系教授丹尼爾 戈爾曼在1995年出版的書中提出。戈爾曼認為,eq包括抑制衝動 延遲滿足的克制力,包含了如何調適自己的情緒如何設身處地地為別人著想 感受別人的 感受的能力,以及如何建立良好的人際關係 培養自動自發的心靈動力 簡單說來,eq是一種為人的涵養,是...

心態決定一切

心態決定一切 1 放下壓力 累與不累,取決於自己的心態 心靈的房間,不打掃就會落滿灰塵。蒙塵的心,會變得灰色和迷茫。我們每天都要經歷很多事情,開心的,不開心的,都在心裡安家落戶。心裡的事情一多,就會變得雜亂無序,然後心也跟著亂起來。有些痛苦的情緒和不愉快的記憶,如果充斥在心裡,就會使人委靡不振。所以...