課程:《程序設計與數據結構》
班級: 1723
姓名: 周亞傑
學號:20172308
實驗教師:王志強
實驗日期:2018年9月30日
必修/選修: 必修java
線性結構之鏈表(1):
1.經過鍵盤輸入一些整數,創建一個鏈表
2.這些數是學號中依次取出的兩位數,再加上今天的時間
3.打印全部鏈表元素, 並輸出元素的總數
4.用一個特殊變量名來記錄元素的總數,變量名是你的名字
5.實驗結果截圖:
數組
線性結構之鏈表(2):
1.實現節點插入、刪除、輸出操做
2.繼續上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器
3.從磁盤讀取一個文件, 這個文件有兩個數字
4.從文件中讀入數字1, 插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做
從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做
5.從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數
6.實驗結果截圖:
服務器
線性結構之鏈表(3):
1.使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
2.學號是雙數, 使用選擇排序
3.在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素
4.實驗結果截圖:
數據結構
問題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之間的轉換方法
本次實驗的大部份內容都是上學期作過的,此次從新練習了一遍以爲本身已經忘得差很少了,但仍是頗有收穫的,從新溫習了一下知識,仍是要勤學、多回顧之前的知識才好