172322 2018-2019-1 《Java軟件結構與數據結構》實驗一報告

172322 2018-2019-1 《Java軟件結構與數據結構》實驗一報告

  • 課程:《程序設計與數據結構》
  • 班級: 1723
  • 姓名: 張昊然
  • 學號:20172322
  • 實驗教師:王志強
  • 助教:張之睿/張師瑜
  • 實驗日期:2018年9月30日
  • 必修/選修: 必修

1.實驗內容

  • 此處填寫實驗的具體內容:

實驗內容過多,故參考做業:php

2.實驗過程及結果

過程:

  • 本次實驗總共五個提交點。我也分爲五個部分來寫過程。
    • 第一:由於以前利用鏈表實現過隊列,故此次就直接import了以前的LinkedQueue將須要輸入的元素放入鏈表隊列之中後再輸出,利用了數組的方法將元素以空格隔開後再放入鏈表中,最後打印整個鏈表。
    • 第二:在第一個節點的基礎上利用InputStreamReaderBufferedReader讀取文件123.txt的數字8和9,並在LinkedQueue中新寫入了addInListaddFisrt方法使得能夠將元素插入到鏈表中的第五位和首位,新寫入了delete方法刪除指定位置的元素。
    • 第三:在第二個節點的基礎上在LinkedQueue中寫了selectionSort()方法,排序完成後按照要求輸出。
    • 第四:利用數組來實現以前鏈表所實現的第一和第二個節點,可是由於以前實現的隊列是利用循環數組來實現的不方便指定位置的插入和刪除,故新寫了非循環單向數組類myarray,以後的實現均以它爲基礎,第一部分的實現與鏈表的實現類似,而且相應的寫入了insertInarray方法實現指定位置的插入,delete實現指定位置的刪除。
    • 第五:在第四個節點的基礎上在myaraay中寫入了selectionSort()方法實現排序後按要求輸出。

結果:

1.java

2.node

3.git

4.
web

5.
數組

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

本次實現的問題大可能是一些小問題,由於在以前的學習中已經接觸了很是屢次的鏈表和數組,對於它們的原理與實現都比較清晰了。

  • 問題1:在作節點一時對於怎樣將輸入的元素利用空格隔開後再放入隊列中產生了疑惑。
  • 問題1解決方案:向王文彬同窗求助,他給我提供了
String[] a = sentence.split(" ");
        for (int i =0;i<a.length;i++){
            queue.enqueue(a[i]);
        }

利用數組將每一個元素分開後再放入一一放入隊列之中,真是妙呀數據結構

  • 問題2:在作節點二時須要將數字二插入首位,可是鏈表的首插法沒有實現過,因此我就在網上找了不少不少的實現方法,結果都是致使整個鏈表丟失。
  • 問題2解決方案:在被逼急事後決定本身寫一個頭插法,在通過本身許久的思考和仔細的畫圖事後寫下了如下方法
public void addFisrt(T element)
    {
        LinearNode<T> node = new LinearNode<T>(element);
        current = head;
        node.next = head;
        head = node;
        count++;
    }

而後竟然就成功了...成功了......我這個時候就很糾結,爲啥我要花一個下午的時間去網上查如何實現,最終卻只花了本身十分鐘的時間寫出了這個方法呢......學習

  • 問題3:在節點二中從文件中提取元素都很是順利可是如何將兩個元素利用分開而後轉化爲整形就有了一些困難。
  • 問題3解決方案:又向王文彬同窗求助了,他又爲我提供了
int n1 = Integer.parseInt(String.valueOf(lineTxt.charAt(0)));
         int n2 = Integer.parseInt(String.valueOf(lineTxt.charAt(2)));

在提取了元素的同時將元素轉化爲整形,真是厲害。設計

  • 問題4: 在實現節點四時,在數組中間插入元素一直插不進去,不是插的位置本來的元素沒了就是後面的元素全變成了須要插入的元素。
  • 問題4解決方案:幸虧此次是王老師在旁邊,就直接向王老師求助了,他爲我從新講解了數組插入元素的原理,須要先將後面的元素所有向後移動一位以後再在本來位置插入須要插入的元素。Just like:
for (int i = elements; i > index-1; i--) 
    {

            array[i+1] = array[i];


    }
            array[index] = element;

代碼託管

其餘(感悟、思考等)

感悟

  • 網上的東西不必定是最好的,有的時候本身去思考、去實現比一開始就去網上找須要的東西會好得多,不能有偷懶的思想。

參考資料

相關文章
相關標籤/搜索