數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告線性表進(jìn)行算式計(jì)算、排課問(wèn)題,JAVA語(yǔ)言,截圖完整
《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告線性表進(jìn)行算式計(jì)算、排課問(wèn)題,JAVA語(yǔ)言,截圖完整》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告線性表進(jìn)行算式計(jì)算、排課問(wèn)題,JAVA語(yǔ)言,截圖完整(47頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 計(jì)算機(jī)0801 中南大學(xué) 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告 指導(dǎo)教師 學(xué) 院 信息科學(xué)與工程學(xué)院 完成時(shí)間 2010年7月7日 目 錄 目 錄 - 2 - 題目一:利用線性表進(jìn)行算式計(jì)算 - 1 - 一、實(shí)驗(yàn)名稱: - 1 -
2、 二、需求分析: - 1 - 三、概要設(shè)計(jì) - 1 - 四、詳細(xì)設(shè)計(jì) - 3 - 五、調(diào)試分析 - 5 - 六、測(cè)試結(jié)果 - 5 - 七、課程設(shè)計(jì)總結(jié) - 7 - 八、參考文獻(xiàn) - 8 - 九、附錄 - 9 - 題目三:排課問(wèn)題 - 21 - 一、實(shí)驗(yàn)名稱: - 21 - 二、需求分析: - 21 - 三、概要設(shè)計(jì) - 21 - 四、詳細(xì)設(shè)計(jì) - 24 - 五、調(diào)試分析 - 33 - 六、測(cè)試結(jié)果 - 33 - 七、課程設(shè)計(jì)總結(jié) - 34 - 八、參考文獻(xiàn) - 35 - 九、附錄 - 35 - - 45 - 題目一:利用線性表進(jìn)行算式計(jì)算 一、
3、實(shí)驗(yàn)名稱: 利用線性表進(jìn)行算式計(jì)算 二、需求分析: 設(shè)計(jì)任務(wù): 界面上出現(xiàn)一個(gè)文本框,輸入一個(gè)算式,點(diǎn)擊按鈕,顯示結(jié)果。該算式內(nèi)只含有數(shù)字、括號(hào)、+、-、*、/、%這幾種字符,優(yōu)先級(jí)為:括號(hào)--%--*,/--+,-。如輸入:2+3*5,結(jié)果為17,輸入(2+3)*5結(jié)果為25。輸入格式有誤,需要給予提示。在算法中,必須實(shí)現(xiàn)對(duì)輸入的算式字符串的分析,而不僅僅是得到結(jié)果。 (1)輸入的形式和輸入值的范圍:數(shù)字和運(yùn)算符(只含有括號(hào)、+、-、*、/、%)。 (2)輸出的形式:以數(shù)字和運(yùn)算符組成的算式形式輸出。 (3)程序所能達(dá)到的功能:對(duì)輸入數(shù)字和運(yùn)算符進(jìn)行分析,并輸出分析結(jié)果。 (
4、4)測(cè)試數(shù)據(jù):包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。
三、概要設(shè)計(jì)
抽象數(shù)據(jù)類型的定義:
ADT Stack {
數(shù)據(jù)對(duì)象:D={ai|ai?ElemSet,i=1,2,…n, n30}
數(shù)據(jù)關(guān)系:R1={
5、; //初始條件:棧S已存在 操作結(jié)果:返回S的元素個(gè)數(shù),即棧的長(zhǎng)度 GetTop(S,&e) //初始條件:棧S已存在且非空 操作結(jié)果:用e返回S的棧頂元素 Push(&S,e) //初始條件:棧S已存在 操作結(jié)果:插入元素e為新的棧頂元素 Pop(&S,&e) //初始條件:棧S已存在且非空 操作結(jié)果:刪除S的棧頂元素,并用e返回其值 主程序的流程: 定義鏈棧,判斷運(yùn)算符優(yōu)先級(jí),實(shí)現(xiàn)具體計(jì)算,錯(cuò)誤處理。 四、詳細(xì)設(shè)計(jì) 主要算法:(偽代碼) #define N 50 #define OK 1 #define ERROR 0 #include
6、
#include
typedef struct{
int top;
double array[N];
}NumStack;
typedef struct{
int top;
char array[N];
}OpStack;
//把字符轉(zhuǎn)換為相應(yīng)的整數(shù)的函數(shù)
int Cint(char mychar){
return (mychar-48);
}
//數(shù)字進(jìn)棧的函數(shù)
status PushNum(NumStack &numstack,double num){
if(numstack.top
7、ck.array[numstack.top-1]=num; return OK; } else return ERROR; } //數(shù)字出棧的函數(shù) status PopNum(NumStack &numstack,double &num){ if(numstack.top>0){ num=numstack.array[numstack.top-1]; numstack.top--; return OK; } else return ERROR; } //操作符進(jìn)棧的函數(shù) status PushOp(OpStack &opstack,char &op){ if(o
8、pstack.top
9、ble a,double b,char c){ double result; 五、調(diào)試分析 1.調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的討論和分析 調(diào)試過(guò)程中,對(duì)于非法輸入的測(cè)試很重要,對(duì)于一些不符合常規(guī)的輸入進(jìn)行測(cè)試,并針對(duì)存在的問(wèn)題對(duì)源代碼進(jìn)行修改,可以對(duì)于非法輸入進(jìn)行提示。 2.算法的時(shí)間復(fù)雜性和可能的改進(jìn)設(shè)想 此算法的運(yùn)行時(shí)間主要花在while循環(huán)上,它從頭到尾掃描后綴表達(dá)式中的每一個(gè)數(shù)據(jù)(每個(gè)操作數(shù)或運(yùn)算符均為一個(gè)數(shù)據(jù)),若后綴表達(dá)式由n個(gè)數(shù)據(jù)組成,則此算法的時(shí)間復(fù)雜度為O(n)。 在轉(zhuǎn)換算法中,中綴算術(shù)表達(dá)式中的每個(gè)字符均需要掃描一遍,對(duì)于掃描到的每個(gè)運(yùn)算符
10、,最多需要進(jìn)行入棧、出棧和寫(xiě)入后綴表達(dá)式這三次操作,對(duì)于掃描到的數(shù)字或小數(shù)點(diǎn),只需要把它直接寫(xiě)入到后綴表達(dá)式即可。所以,此算法的時(shí)間復(fù)雜度為O(n),n為后綴表達(dá)式中字符的個(gè)數(shù)。 六、測(cè)試結(jié)果 1、輸入:5+6*3%2 輸出:5+6*3%2=11.0 2、輸入:3+5*(8-2)%4 輸出:3+5*(8-2)%4=13.0 3、輸入:1*5++2 輸出:對(duì)不起!表達(dá)式有錯(cuò)! 4、輸入:123321123+456654456 輸出:123321123+456654456=5.7997555E8 5、輸入:1111 輸出:1111=1111.0 6、輸入
11、:5(3+2) 輸出:對(duì)不起!表達(dá)式有錯(cuò)! 7、輸入:5+9*3-8/4%2 輸出:5+9*3-8/4%2= -Infinity 界面效果圖 運(yùn)行結(jié)果顯示-1 運(yùn)行結(jié)果顯示-2 七、課程設(shè)計(jì)總結(jié) 通過(guò)本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我有很多收獲,在此,我將我的親身感受回顧和總結(jié)于下: 在上學(xué)期中學(xué)習(xí)了本專業(yè)的核心課程——數(shù)據(jù)結(jié)構(gòu)。什么是數(shù)據(jù)結(jié)構(gòu)呢?這是我們首先考慮到的問(wèn)題:從字面上來(lái)看,“數(shù)據(jù)結(jié)構(gòu)”分?jǐn)?shù)據(jù)和結(jié)構(gòu)兩部分,這就很容易聯(lián)想到數(shù)據(jù)結(jié)構(gòu)的本質(zhì)是一種使數(shù)據(jù)結(jié)構(gòu)化
12、的知識(shí)。通過(guò)理論課程的學(xué)習(xí),使我初步了解了數(shù)據(jù)結(jié)構(gòu)的基本知識(shí)。數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象以及它們之間的關(guān)系和操作的學(xué)科。現(xiàn)代程序設(shè)計(jì)已轉(zhuǎn)型為討論如何在最大程度上處理好數(shù)據(jù)之間的相互關(guān)系并提升數(shù)據(jù)處理的效率。在這里,數(shù)據(jù)結(jié)構(gòu)就發(fā)揮了重要的作用。數(shù)據(jù)結(jié)構(gòu)可以說(shuō)是編程的靈魂,它不是一門(mén)語(yǔ)言。數(shù)據(jù)結(jié)構(gòu)和程序設(shè)計(jì)語(yǔ)言本身沒(méi)有任何聯(lián)系,唯一有的關(guān)系就是用程序語(yǔ)言去描述數(shù)據(jù)結(jié)構(gòu)?,F(xiàn)今我們所學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)課程常用的描述語(yǔ)言主要有C、C++和JAVA等。數(shù)據(jù)結(jié)構(gòu)只是給我們提供處理常規(guī)問(wèn)題的一個(gè)思路而已,講的是已經(jīng)成熟的編程思想和算法,適用于所有開(kāi)發(fā)語(yǔ)言。所以說(shuō),組織好數(shù)據(jù)結(jié)構(gòu)是
13、寫(xiě)程序的第一步。 數(shù)據(jù)結(jié)構(gòu)是一門(mén)實(shí)踐性較強(qiáng)的計(jì)算機(jī)基礎(chǔ)課程,為了學(xué)好這門(mén)課程,必須在掌握理論知識(shí)的同時(shí),加強(qiáng)上機(jī)實(shí)踐。課程設(shè)計(jì)的目的就是要達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,使我們能夠根據(jù)數(shù)據(jù)對(duì)象的特性,學(xué)會(huì)數(shù)據(jù)組織的方法,能把現(xiàn)實(shí)世界中的實(shí)際問(wèn)題在計(jì)算機(jī)內(nèi)部表示出來(lái),同時(shí)強(qiáng)化對(duì)編程語(yǔ)言的使用,培養(yǎng)基本的、良好的程序設(shè)計(jì)能力。 我于大二上學(xué)期從軟件學(xué)院軟件工程專業(yè)轉(zhuǎn)到信息學(xué)院計(jì)算機(jī)專業(yè),在09年暑假中,我參加了軟件學(xué)院的JAVA實(shí)訓(xùn),了解了一定的JAVA語(yǔ)言知識(shí),因?yàn)楸敬握n程設(shè)計(jì)要制作界面,所以選擇JAVA語(yǔ)言有它的優(yōu)勢(shì)。 通過(guò)這次課程設(shè)計(jì),我體會(huì)到要做出一個(gè)好的程序是很難的,盡管我花了一個(gè)多星期
14、去做這兩個(gè)項(xiàng)目,但這個(gè)程序還是不夠理想,只是達(dá)到一些基本的水平而已,跟那些功能強(qiáng)大的程序還是有很大的距離。這個(gè)程序還有一些地方值得完善的,比如算式計(jì)算中一些非法輸入(如數(shù)字后面連續(xù)輸入括號(hào)無(wú)法判斷非法并影響計(jì)算結(jié)果等),這些問(wèn)題需要程序員考慮得更全面,使實(shí)現(xiàn)的功能更完善,在今后不斷改進(jìn)。 在近兩周的課程設(shè)計(jì)中,我認(rèn)為最大的收獲就是在遇到問(wèn)題時(shí)解決問(wèn)題的過(guò)程。如對(duì)語(yǔ)言并不完全了解,如有些函數(shù)的操作需要通過(guò)查閱相關(guān)書(shū)籍和幫助來(lái)了解,另外,在入棧、出棧的算法設(shè)計(jì)中,曾因?yàn)樗悸凡磺逦诰幋a時(shí)遇到了困難,對(duì)于運(yùn)算符和數(shù)字的分離和判斷也曾困擾過(guò)我。我通過(guò)查閱書(shū)籍、上網(wǎng)搜索和向其他同學(xué)詢問(wèn),才得以最終
15、完成項(xiàng)目。 通過(guò)這次課程設(shè)計(jì),我學(xué)到了很多,同時(shí)也認(rèn)識(shí)到了自己的不足。學(xué)校的課程不能將所有的知識(shí)都講授給我們,所以要想學(xué)好一門(mén)課程,我們應(yīng)該充分利用課余時(shí)間多看專業(yè)相關(guān)的書(shū)籍,豐富自己的知識(shí)。同時(shí),作為計(jì)算機(jī)專業(yè)的學(xué)生,動(dòng)手能力也是非常重要的,在掌握了理論知識(shí)后應(yīng)多多上機(jī)實(shí)踐。只有多多實(shí)踐,才能更好地學(xué)習(xí)好一門(mén)語(yǔ)言,更好地理解課程的內(nèi)容。 八、參考文獻(xiàn) 【1】 清華大學(xué)計(jì)算機(jī)系列教材·數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)/嚴(yán)蔚敏,吳偉民編著 北京:清華大學(xué)出版社,2007.4 【2】 Java JDK 5.0學(xué)習(xí)筆記/良葛格編著·北京:清華大學(xué)出版社,2006.8
16、 九、附錄 package stack; public class CharStack { CharNode top; int sum; public CharStack() { top=new CharNode(); top.c='#'; sum=0; } public char pop() //不作有沒(méi)有元素的判斷,統(tǒng)一在出棧前進(jìn)行判斷,若沒(méi)有元素,則不調(diào)用此函數(shù) { char c=top.node.c; top.node=top.node.node; sum--; return c;
17、} public void push(char c) { CharNode newNode=new CharNode(); newNode.c=c; newNode.node=top.node; top.node=newNode; sum++; } } class CharNode { CharNode node; char c; public CharNode() { node=null; c=' '; } } package stack; public class CharStack { Char
18、Node top; int sum; public CharStack() { top=new CharNode(); top.c='#'; sum=0; } public char pop() //不作有沒(méi)有元素的判斷,統(tǒng)一在出棧前進(jìn)行判斷,若沒(méi)有元素,則不調(diào)用此函數(shù) { char c=top.node.c; top.node=top.node.node; sum--; return c; } public void push(char c) { CharNode newNode=new Ch
19、arNode(); newNode.c=c; newNode.node=top.node; top.node=newNode; sum++; } } class CharNode { CharNode node; char c; public CharNode() { node=null; c=' '; } } package stack; import java.awt.GridBagConstraints; import java.awt.Insets; /** * ????GBC?????????
20、????????GridBagLayout?????????????????????? * λ?á???С??????????????? * @author ibm * */ public class GBC extends GridBagConstraints { /** * ??????????λ??(λ??????????) * @param x * @param y */ public GBC(int x, int y) { this.gridx = x; this.gridy = y; }
21、 public GBC(int gridx, int gridy, int gridwidth, int gridheight) { this.gridx = gridx; this.gridy = gridy; this.gridwidth = gridwidth; this.gridheight = gridheight; } public GBC setAnchor(int anchor) { this.anchor = anchor; return this; } /** * ??????
22、??????????????????С????????С????????仯??? * @param fill * @return */ public GBC setFill(int fill) { this.fill = fill; return this; } /** * ?????????????? * @param weightx * @param weighy * @return */ public GBC setWeight(double weightx, double wei
23、ghty) { this.weightx = weightx; this.weighty = weighty; return this; } /** * ???????????????????????С * @param distance * @return */ public GBC setInset(int distance) { this.insets = new Insets(distance, distance, distance, distance); return this;
24、 } /** * ???????????????????????С * @param distance * @return */ public GBC setInset(int top, int left, int bottom, int right) { this.insets = new Insets(top, left, bottom, right); return this; } public GBC setIpad(int ipadx, int ipady) { this.ipadx =
25、 ipadx; this.ipady = ipady; return this; } } public class GetPriority { public int inSideStack(char c) { int i=0; switch(c) { case '=': i=1;break; case ')': i=1;break; case '+': i=3;break; case '-': i=3;break; case '*': i=5;break; case '/':
26、i=5;break; case '%': i=7;break; case '^': i=9;break; case '(': i=1;break; } return i; } public int outSideStack(char c) { int i=0; switch(c) { case '=': i=0;break; case ')': i=0;break; case '+': i=2;break; case '-': i=2;break;
27、case '*': i=4;break; case '/': i=4;break; case '%': i=6;break; case '^': i=8;break; case '(': i=10;break; default : i=-1; //當(dāng)遇到不可識(shí)別的運(yùn)算符識(shí),設(shè)其優(yōu)先級(jí)為-1,以便在主程序中能及時(shí)檢查出錯(cuò)誤 } return i; } } package stack; import java.awt.BorderLayout; import java.awt.event.Act
28、ionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class MainClass extends JFrame { private static final long serialVersionUID = 8669406311759888678L; MainClass mainClass; JTabbedPane tab; JTextField input, output; JButton btnWork; private JTextArea txt
29、aDisplay; private JTextArea txtaInput; private JLabel lblDisplay; private JLabel lblInput; private JButton btnProcess; private JPanel pnlNorth; private JPanel pnlSouth; private JPanel pnl; private JScrollPane scrDisplayPnl; private JScrollPane scrInputPnl; public static void main
30、(String[] args) { new MainClass().init(); } public void init() { try { UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel"); } catch (Exception e) { try { UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName()); } catch (Exception e1) {
31、 } } mainClass = new MainClass(); this.setTitle("數(shù)據(jù)結(jié)構(gòu)"); this.setSize(500, 400); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.add(this.getJTabbedPane(), BorderLayout.CENTER); this.setVisible(true); } public JTabbedPane getJTabbe
32、dPane() { tab = new JTabbedPane(); tab.addTab("線性表", getFirstPanel()); tab.addTab("Huffman", new JPanel()); return tab; } public JPanel getFirstPanel() { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); txtaDisplay = new JTextArea(8, 10); txtaDisplay.setE
33、ditable(false); txtaInput = new JTextArea(8, 15); scrDisplayPnl = new JScrollPane(txtaDisplay); scrInputPnl = new JScrollPane(txtaInput); lblDisplay = new JLabel("分析結(jié)果"); lblInput = new JLabel("輸入表達(dá)式:"); btnProcess = new JButton("分析"); pnlNorth = new JPanel(); pnlSouth = new
34、JPanel(); pnl = new JPanel(); pnlNorth.setLayout(new BorderLayout()); pnlSouth.setLayout(new BorderLayout()); // 組件控制 pnlNorth.add(lblDisplay, BorderLayout.NORTH); pnlNorth.add(scrDisplayPnl, BorderLayout.CENTER); pnlSouth.add(lblInput, BorderLayout.NORTH); pnlSouth.add(scrIn
35、putPnl, BorderLayout.CENTER); pnl.add(btnProcess); panel.add(pnlNorth, BorderLayout.NORTH); panel.add(pnlSouth, BorderLayout.CENTER); panel.add(pnl, BorderLayout.SOUTH); btnProcess.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String so
36、urce = txtaInput.getText().trim(); txtaInput.setText(""); txtaDisplay.setText(calculate(source)); } }); return panel; } public String calculate(String inputStr) { String result; CharStack charStack = new CharStack(); NumStack numStack = new NumStack(); GetPriority
37、 priority = new GetPriority(); // GetPriority priority=new GetPriority(); OperationClass operationFunction = new OperationClass(); String str = inputStr + "="; // 輸入一個(gè)正確的表達(dá)式 char[] charArray = str.toCharArray(); float a = 0f; boolean f = false; boolean d = false; boolean judg
38、echar = true; boolean rku = false; int lku = 0; int l = 0; char chInStack; // 這個(gè)字符變量在下面代碼中充當(dāng)存儲(chǔ)從運(yùn)算符棧中出棧的運(yùn)算符 for (int i = 0; i < charArray.length; i++) { if (charArray[0] == ')') { judgechar = false; break; } if (charArray[i] == '=' && charArray.length > i + 1) {
39、 judgechar = false; break; } if (mainClass.judge(charArray[i])) { if (d == true) { float k = (float) (charArray[i] - '0'); for (int j = 0; j < l; j++) { k = k / 10; } a += k; l++; } else { a = a * 10f + (float) (int) (charArray[i]
40、- '0'); } f = true; // 證明a確實(shí)被更改過(guò) } else if (charArray[i] == '.') { d = true; l = 1; } else // 如果遇到運(yùn)算符,把數(shù)字壓入棧中 { if (true == f) { numStack.push(a); a = 0f; f = false; d = false; l = 1; if (charArray[i] == '(') { lku++;
41、 } else if (charArray[i] == ')') { lku--; rku = true; } } else // 當(dāng)a沒(méi)有被改變過(guò)但又接到一個(gè)運(yùn)算符,這時(shí)我們得判斷一下表達(dá)示的正確性了 { if (charArray[i] == '(') { if (rku) { judgechar = false; break; } else { lku++; } } else if (charArray[i]
42、 == ')') { lku--; rku = true; } else { if (rku) { rku = false; } else { judgechar = false; break; } } } if (priority.outSideStack(charArray[i]) == -1) { judgechar = false; break; } // 在這里開(kāi)始填寫(xiě)運(yùn)算符壓入或
43、出棧操作代碼 if (charStack.sum == 0) { charStack.push(charArray[i]); } else { chInStack = charStack.pop(); while (true) { if (mainClass.inOrOut(chInStack, charArray[i])) { // 這里填寫(xiě)運(yùn)算符要出棧的代碼 if (operationFunction.operation(chInStack, numStack, c
44、harStack)) { if (chInStack == '(' && charArray[i] == ')') { break; } // 運(yùn)算完括號(hào)內(nèi)的表達(dá)示之后,停止循環(huán)(同時(shí),括號(hào)外的“)”不應(yīng)壓入棧中) else if (charStack.sum == 0) { if (charArray[i] == '=') break; else { charStack.push(charArray[i]); br
45、eak; } } else { chInStack = charStack.pop(); } } else { judgechar = false; break; } } else { charStack.push(chInStack); charStack.push(charArray[i]); break; } } } } } if
46、 (judgechar == true && lku == 0) { if (numStack.top.a != 1) result = "對(duì)不起!表達(dá)式有錯(cuò)!"; else result = str + " " + numStack.pop(); } else result = "對(duì)不起!表達(dá)式有錯(cuò)!"; return result; } public boolean judge(char c) { int a; a = (int) (c - '0'); if (a >= 0 && a <= 9)
47、return true; else return false; } public boolean inOrOut(char ch1, char ch2) // 運(yùn)算符若要出棧,則返回true,否則返回false,ch1代表?xiàng)?nèi)的運(yùn)算符 { GetPriority priority = new GetPriority(); // 判斷棧內(nèi)和棧外的運(yùn)算符的優(yōu)先級(jí) boolean t = priority.inSideStack(ch1) > priority.outSideStack(ch2); if (t) return true;
48、else return false; } } package stack; public class NumStack { IntNode top; public NumStack() { top=new IntNode(); } public float pop() //出棧 { //對(duì)于頭結(jié)點(diǎn),存整數(shù)類型的a屬性存的是棧內(nèi)的元素個(gè)數(shù) //對(duì)于出棧操作,由于本函數(shù)返回值為整數(shù),故不進(jìn)行判斷是否棧內(nèi)還有元素, //而是在調(diào)用此函數(shù)前,通過(guò)top.a的值進(jìn)行判斷 float
49、 t=top.node.a; top.node=top.node.node; top.a--; return t; } public void push(float a) //進(jìn)棧 { IntNode newnode=new IntNode(); newnode.a=a; newnode.node=top.node; top.node=newnode; top.a++; } } class IntNode { IntNode node; float a; public In
50、tNode() { node=null; a=0f; } } package stack; public class OperationClass { //從numStack棧中依次取出兩個(gè)數(shù)字進(jìn)行相應(yīng)運(yùn)算符的操作,結(jié)果再壓入numStack棧中 public boolean operation(char chInStack,NumStack numStack,CharStack charStack) { float a; float b; switch(chInStack) { cas
51、e '+': if(numStack.top.a>=2){a=numStack.pop();b=numStack.pop();numStack.push(a+b);return true;}else{return false;} case '-': if(numStack.top.a>=2){a=numStack.pop();b=numStack.pop();numStack.push(b-a);return true;}else{return false;} case '*': if(numStack.top.a>=2){a=numStack.pop();b=numSta
52、ck.pop();numStack.push(a*b);return true;}else{return false;} case '/': if(numStack.top.a>=2){a=numStack.pop();b=numStack.pop();numStack.push(b/a);return true;}else{return false;} case '%': if(numStack.top.a>=2){a=numStack.pop();b=numStack.pop();numStack.push(b%a);return true;}else{return f
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《產(chǎn)品價(jià)值鏈與營(yíng)銷(xiāo)戰(zhàn)略》
- lecture 9(精品)
- Where’s your pen pal from (2)
- (精品)實(shí)驗(yàn)二血清γ球蛋白的分離純化與鑒定by陳蔚文
- 企業(yè)專利風(fēng)險(xiǎn)管理
- 高中記敘文寫(xiě)作指導(dǎo):寫(xiě)人要凸顯個(gè)性ppt課件
- 新生兒溶血病的發(fā)病機(jī)理臨床癥狀課件
- 7、艱辛的求索 (2)
- 學(xué)校心理健康教育組織管理課件
- IE七大手法的發(fā)展歷程
- 頸托的正確使用課件
- (精品)電功與電功率復(fù)習(xí)1
- 李曉光-管理學(xué)原理第十三章領(lǐng)導(dǎo)工作概述
- 固體中的相結(jié)構(gòu)
- 智能化酒店系統(tǒng)PPT