20182330 2019-2020-1 《數據結構與面向對象程序設計》實驗六報告

20182330 2019-2020-1 《數據結構與面向對象程序設計》實驗六報告

課程:《程序設計與數據結構》
班級: 1823
姓名: 魏冰妍
學號:20182330
實驗教師:王志強
實驗日期:2019年10月23日
必修/選修: 必修html

1.實驗內容

1.鏈表練習,要求實現下列功能:
經過鍵盤輸入一些整數,創建一個鏈表;
這些數是你學號中依次取出的兩位數。 再加上今天的時間。
例如你的學號是 20172301
今天時間是 2018/10/1, 16:23:49秒
數字就是
20, 17,23,1, 20, 18,10,1,16,23,49
打印全部鏈表元素, 並輸出元素的總數。
在你的程序中,請用一個特殊變量名來紀錄元素的總數,變量名就是你的名字。 例如你叫 張三, 那麼這個變量名就是
int nZhangSan = 0; //初始化爲 0.
作完這一步,把你的程序簽入源代碼控制(git push)。java

2.鏈表練習,要求實現下列功能:
實現節點插入、刪除、輸出操做;
繼續你上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器;
從磁盤讀取一個文件, 這個文件有兩個數字。
從文件中讀入數字1, 插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做。
從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,並繼續下面的操做。
從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數。node

3.鏈表練習,要求實現下列功能:
使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序;
若是你學號是單數, 選擇冒泡排序, 不然選擇選擇排序。
在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素。
在(2)獲得的程序中繼續擴展, 用同一個程序文件,寫不一樣的函數來實現這個功能。 仍然用 nZhangSan (你的名字)來表示元素的總數。android

4.在android上實現實驗(1)和(2)git

5.在android平臺上實現實驗(3)正則表達式

2. 實驗過程及結果

實驗一

輸入整數創建鏈表並打印數組

實驗2、三

實驗4、五

如下是MainActivity,定義文本框,初始化,並設置監聽器服務器

如下是Link方法,實現鏈表的插入、刪除等數據結構

如下是佈局文件和運行結果函數


3. 實驗過程當中遇到的問題和解決過程

  • 問題1:如何將輸入的字符串存入字符串數組
  • 問題1解決方案:經過查詢,我找到了split方法
  • 總結一下split方法的使用:Java中的 split 函數是用於按指定字符(串)或正則去分割某個字符串,結果以字符串數組形式返回。下圖是我用空格分割字符串的代碼。

  • 也能夠用兩個分割符,如圖

  • 結果以下:

  • 咱們還能夠設置分割的份數,就像這樣

  • 結果以下:

  • 對於分割的字符(串),一般是常見,普通的,沒什麼問題。須要注意的是 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \等字符, 因它們是正則表達式中的一部分, 因此須要進行轉義才能表示它自己,好比這樣

  • 問題2:鏈表只打印出表頭,單步調試無果

  • 問題2解決方案:剛開始覺得是打印的問題,檢查了很久都沒有檢查出來,後來恍然大悟,這是一個在學c語言的時候也出現過的問題:該用while的地方錯用了if並且渾然不知。
  • 在用if時只判斷了一遍node.next是否等於null,固然只能打印第一個數字,只有while能夠循環。

  • 問題3:頭插法方法正確但沒法正確打印?

  • 檢查了好多遍都沒有發現方法有錯,代碼以下:
public static void HeadInsert(Link Head,Link node){
        System.out.println("The list headinserted is: ");
        node.next=Head;
        Head=node;
        Head.toString();
 }

在邏輯上查找錯誤無果,請教胡泊同窗,一語點醒夢中人。頭插法時換了「頭」Head,而你的void型沒法返回新的「Head」,就等於作了無用功。修改以下:

public static Link HeadInsert(Link Head,Link node){
        System.out.println("The list headinserted is: ");
        node.next=Head;
        Head=node;
        Head.toString();
        return Head;
    }
  • 問題4:按照以下代碼無輸入輸出

  • 解決4:在AndroidStudio中setText必須輸出String變量接收的字符串。修改爲以下代碼:
MidInsert(Head,i,5);
            String str3="The numbers of number in the list is ";
            p.setText(str3+ nWeiBingYan );
            q.setText(Head.toString());

其餘(感悟、思考等)

學習數據結構須要實踐與理論相結合,關鍵要理解,其次要練。此次實驗問題不少,主要仍是安卓的操做沒有掌握。

參考資料

相關文章
相關標籤/搜索