20172308 實驗一《程序設計與數據結構》線性結構 實驗報告

20172308 2018-2019-1 實驗1 《線性結構》報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 周亞傑
學號:20172308
實驗教師:王志強
實驗日期:2018年9月30日
必修/選修: 必修java

1.實驗內容

  • 線性結構之鏈表(1):經過鍵盤輸入一些整數,創建一個鏈表,打印全部鏈表元素, 並輸出元素的總數。
  • 線性結構之鏈表(2):實現節點插入、刪除、輸出操做,擴展功能,從磁盤讀取一個文件,從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數。
  • 線性結構之鏈表(3):使用選擇排序法根據數值大小對鏈表進行排序,在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素。
  • 線性結構之數組(4):經過鍵盤輸入一些整數,創建一個數組,打印全部數組元素, 並輸出元素的總數;實現數組插入、刪除、輸出操做, 擴展功能,從磁盤讀取一個文件,從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數。
  • 線性結構之數組(5):使用選擇排序法根據數值大小對數組進行排序,在排序的每個輪次中, 打印元素的總數,和目前數組的全部元素。

2. 實驗過程及結果

鏈表與數組練習,全部功能在一個程序中完成

每完成一個功能簽入一次碼雲

  • 線性結構之鏈表(1):
    1.經過鍵盤輸入一些整數,創建一個鏈表
    2.這些數是學號中依次取出的兩位數,再加上今天的時間
    3.打印全部鏈表元素, 並輸出元素的總數
    4.用一個特殊變量名來記錄元素的總數,變量名是你的名字
    5.實驗結果截圖:
    數組

  • 線性結構之鏈表(2):
    1.實現節點插入、刪除、輸出操做
    2.繼續上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器
    3.從磁盤讀取一個文件, 這個文件有兩個數字
    4.從文件中讀入數字1, 插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做
    從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做
    5.從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數
    6.實驗結果截圖:
    服務器

  • 線性結構之鏈表(3):
    1.使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
    2.學號是雙數, 使用選擇排序
    3.在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素
    4.實驗結果截圖:
    數據結構

  • 線性結構之數組(4):
    1.經過鍵盤輸入一些整數,創建一個數組
    2.這些數是學號中依次取出的兩位數,再加上今天的時間
    3.打印全部數組元素, 並輸出元素的總數
    4.用一個特殊變量名來記錄元素的總數,變量名是你的名字
    5.實現數組插入、刪除、輸出操做
    6.繼續上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器
    7.從磁盤讀取一個文件, 這個文件有兩個數字
    8.從文件中讀入數字1, 插入到數組第 5 位,並打印全部數字,和元素的總數。 保留這個數組,繼續下面的操做
    從文件中讀入數字2, 插入到數組第 0 位,並打印全部數字,和元素的總數。 保留這個數組,繼續下面的操做
    9.從數組中刪除剛纔的數字1. 並打印全部數字和元素的總數
    10.實驗結果截圖:

  • 線性結構之數組(5):
    1.使用插入排序法或者選擇排序法根據數值大小對數組進行排序
    2.學號是雙數, 使用插入排序
    3.在排序的每個輪次中, 打印元素的總數,和目前數組的全部元素
    4.實驗結果截圖:

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

  • 問題1:實驗過程當中遇到最大的問題如圖:

    從排序的結果來看,原本應該是按照選擇排序的方式來排序的,排出來的結果甚至連大小都不對
    可是仔細看一下,會發現也是有順序:.net

  • 問題1解決過程:排的順序是按照數字的第一個數來排的,若是都是一位數結果就是正常的,若是是兩位數,排大小卻只取兩位數的第一位來與其它數比較。好比,會把1認爲是與11,111相等。可是這些都是我猜的,而後百度一下我用來排序的方法compareTo;設計


代碼中的list是comparable型的,直接用compareTo方法獲得的就是我上面所說的結果,可是很奇怪爲何會這樣;因而強轉了String類型,再轉成int型做比較便可獲得正確排序,如圖:
3d

【參考資料】
java中的compareto方法的詳細介紹
String類中的compareTo方法總結code

  • 問題2:還有一個問題是,從文件中讀取數字,而後賦給一個String類型的變量,本覺得很簡單,卻發現根本不能直接賦值blog

  • 問題2解決過程:
    這裏我採起的措施是,先建立文件
    OutputStream outputStream1 = new FileOutputStream(file);
    再將數字寫入文件
    outputStream1.write(("1 2").getBytes());
    我認爲這樣就能夠保證寫進去的數據是string型的,而後直接讀取數字賦給string變量就好了
    InputStream inputStream1 = new FileInputStream(file); String result = inputStream1.read()
    然而事實是,要將讀取的數字賦給string變量須要跟多的操做
    String result = new BufferedReader(new InputStreamReader(inputStream1)) .lines().collect(Collectors.joining(System.lineSeparator()));
    參考資料中有更多的讀取數字賦給變量的方法排序

【參考資料】
Java中InputStream和String之間的轉換方法

4.感悟

本次實驗的大部份內容都是上學期作過的,此次從新練習了一遍以爲本身已經忘得差很少了,但仍是頗有收穫的,從新溫習了一下知識,仍是要勤學、多回顧之前的知識才好

相關文章
相關標籤/搜索