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