資料結構之算符優先法學習筆記()

2021-05-25 20:56:18 字數 1985 閱讀 9131

今天長沙天氣特別冷,一下課就坐車回宿舍了。還是做自己的資料結構……看到堆疊那節,看到算符優先法就想動手編下,再聯想到上次看到一題目是x1 ,x2,x3,x4,x5中間放四個算術符,結果等於y的有多少種符號的集合。正好想到可利用回溯法找出它所的排列來,也不是4的全排列,然後利用算符優先得出其結果,最後判斷是否相等即可!同時也複習下堆疊的知識。說真的,剛寫完它的時候也小錯誤大難,在堆疊的出棧還出現了死迴圈的,冷靜的轉了半天才算完成,**夠多,但沒什麼技術含量,只是為自己做乙個筆記,同時也紀念下自己寫過的算是長程式了吧。。

#include

#include

#include

#include

#define  stack_init_size  100

#define len  10

vectorss;

char  x[len];

char  h[4]=;

int numsource[5];  用於輸入原始資料

int y;

int sum=0;///用於計算總共有多少種符合要求

void  process(vectorss);/在定義之前呼叫的函式申明

typedef  structsignal;

signal  mm[5]; 用於定義優先順序的陣列

/*定義數字堆疊*/

typedef  structnumstack;

/*定義字元堆疊*/

typedef  structcharstack;

numstack  optn; ///定義資料堆疊

charstack  optr;///定義字元堆疊

/*數字堆疊的初始化*/

void  initstack(numstack &optn)

/*字元堆疊的初始化*/

void  initstack(charstack &optr)

/*數字堆疊的入棧*/

void  push(numstack &optn,int e) 

/*字元堆疊的入棧*/

void  push(charstack &optr,char e) 

/*數字堆疊的出棧*/

void  pop(numstack &optn, int &e) 

/*字元堆疊的出棧*/

void  pop(charstack &optr, char &e) 

/*取字元堆疊棧頂元素*/

void  gettop(charstack optr,char &e)

/*堆疊過程中的數值符號計算*/

int operater(int num1,char ch,int num2)

}/*構造字元數字表示式向量*/

void constructed(vector&ss,char *x, int *y)

ss.push_back(y[i]+48);

ss.push_back('#');

for(i=0;i<11;i++)

cout<

/*棧頂字元與輸入字元的優先順序比較*/

int precede(char  c1,char c2)

return p1>=p2?2:-2; }

int  fun(char x,int t, char c)

/*搜尋符號函式*/

void  backtrack(int t)

else

if(precede(str,mm)==0)   p=1; 

push(optr,str);

str=ss[++i];

}/swith

if(p==1)  break; 

gettop(optr,mm); 

}else         

}//while

pop(optn,result);

if(result==y)  sum++;

cout<

int main(int argc, char *argv)

資料結構 算術表示式 算符優先法

還新增了乘方的優先順序,自行參考 一開始我寫的只能輸入個位數,後來想了好久才解決,主要是在判斷是否為運算子後,若不是運算子,別急著入棧,用乙個標記陣列記著,若下乙個字元還不是運算子,則利用strcat函式鏈結之前標記陣列和這乙個字元,直到下乙個字元是運算子為止,才入棧。至於負數的運算,則要判斷是否連...

資料結構與演算法學習筆記

演算法基礎篇 第一章 演算法概述 首先了解一下基本的概念 1.1 什麼是演算法呢?從字面意義上理解,演算法就是用於計算的方法,用這種方法達到預期的結果。通俗的講,演算法可以理解為乙個完整的解題步驟,由一些基本的運算和規定的運算順序組成。通過這樣的解題步驟可以解決特定的問題。演算法可以抽象出5個特徵 ...

資料結構和演算法學習筆記

資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。程式設計 資料結構 演算法 簡單來說資料結構就是關係,元素相互之間存在的一種或多種特定關係的集合。1.1 邏輯結構和物理結構 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條...