實驗六

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

課程:《程序設計與數據結構》
班級: 1823
姓名: 姬旭
學號: 20182334
實驗教師:王志強
實驗日期:2019年10月21日
必修/選修: 必修java

1.實驗內容

1、線性結構之鏈表(1)

經過鍵盤輸入一些整數,創建一個鏈表(1分);
這些數是你學號中依次取出的兩位數。 再加上今天的時間。android

例如你的學號是 20172301
今天時間是 2018/10/1, 16:23:49秒
數字就是 20, 17,23,1, 20, 18,10,1,16,23,49

打印全部鏈表元素, 並輸出元素的總數。
在你的程序中,請用一個特殊變量名來紀錄元素的總數,變量名就是你的名字。 例如你叫 張三, 那麼這個變量名就是
int nZhangSan = 0; //初始化爲 0.git

作完這一步,把你的程序簽入源代碼控制(git push)。服務器

2、線性結構之鏈表(2)

實現節點插入、刪除、輸出操做(2分,3個知識點根據實際狀況酌情扣分);網絡

繼續你上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器;數據結構

從磁盤讀取一個文件, 這個文件有兩個數字。 
從文件中讀入數字1,  插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做。 
從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,並繼續下面的操做。 
從鏈表中刪除剛纔的數字1.  並打印全部數字和元素的總數。

簽入全部代碼。ide

3、線性結構之鏈表(3)

使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序(2分);
若是你學號是單數, 選擇冒泡排序, 不然選擇選擇排序。
在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素。函數

在(2)獲得的程序中繼續擴展, 用同一個程序文件,寫不一樣的函數來實現這個功能。 仍然用 nZhangSan (你的名字)來表示元素的總數。佈局

4、線性結構之鏈表(4)

在android上實現實驗(1)和(2)
本題4分學習

5、線性結構值鏈表(5)

在android平臺上實現實驗(3)
本題2分

2. 實驗過程及結果

1、線性結構之鏈表(1)

本次實驗主要是用到了鏈表這個知識,我是用到了Node的方法,將head指針化,方便本身操做。

如下是結果:

1、線性結構之鏈表(2)

第二個實驗要求用到文件讀寫,這就要回顧到以前學習網絡交互裏的知識,當時就用到了文件讀寫,那麼我再在這裏回顧一下代碼:

//將集合數據寫入磁盤
            FileWriter fw = new FileWriter("D:\\IDEAAAA\\untitled5\\Week8\\List_practice\\title.txt");
            for (String s : list) {
                fw.write(s);
                fw.write("\r\n");
            }
            fw.close();

//讀取磁盤上文件數據
            BufferedReader br = new BufferedReader(new FileReader("D:\\IDEAAAA\\untitled5\\Week8\\List_practice\\title.txt"));
            String line;

//將讀取到的數據寫入到list集合中
            List<String> list1 = new ArrayList<String>();
            while ((line = br.readLine()) != null) {
                list1.add(line);
            }
            String pp = "";
//循環輸出list集合

            String s = list1.toString();
            pp = s.substring(1,s.length()-1);
            br.close();

說實話這裏我忘了不少也是再自學了一遍才明白怎麼寫代碼。

如下是運行結果:

線性結構之鏈表(3)

這個實驗相對前兩個實驗來講就是加了個排序,選擇排序仍是冒泡排序,不管哪個都很重要。

如下是運行結果:

線性結構之鏈表(4)

(4)和(5)都是要求在Android上實現,自我感受入門較難,我也是琢磨了很長時間,最後是結對夥伴來幫了我一把,我才得以運行出來以及後面的實現。

如下是運行結果:

線性結構之鏈表(5)

(5)同(4)同樣,難就難在開頭的地方,其餘還好。

如下是運行結果:

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

  • 問題1:實驗四和實驗五是要在Android上實現,可是本身根本不知道如何實現。
  • 問題1解決方案:詢問助教,詢問結對夥伴,獲得的解答是:
public class MainActivity extends AppCompatActivity {
    EditText editText1;
    EditText editText2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText1 = (EditText)findViewById(R.id.editText1);
        editText2 =(EditText)findViewById(R.id.editText2);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(OnClickListener);

    }
    View.OnClickListener OnClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String get = editText1.getText().toString();
            
            editText2.setText(a.toString());

其中exitTest和button都是後面加上去的,起着關鍵做用,鏈接其屏幕輸出和輸入。

String get = editText1.getText().toString();
            
editText2.setText(a.toString());

這兩行代碼一樣起着關鍵做用,控制着屏幕的輸入和輸出。

  • 問題2:關於佈局方面,搞不懂線性佈局和約束佈局之類的區別。

  • 問題2解決方案:上網找博客Android Studio 經常使用控件和經常使用佈局的介紹
    ,裏面雖然講的不是特別詳細,但基本上全都覆蓋了,能讓初學者快速入門。
    所謂線性佈局就是總體在一條線上,不能隨意改動。相對來講約束佈局就很自由了,裏面的控件很容易控制和改動,帶來了方便。

  • 問題3:在用Android實現第二個文件的時候新建文件的代碼本身忘了。
  • 問題3解決方案:從新找本身之前打過的代碼,再從新學習,得出如下代碼。
InputStream input=getResources().openRawResource(R.raw.test);
        /*  Reader reader=new InputStreamReader(input);*/
        BufferedInputStream bufferedInputStream=new BufferedInputStream(input);
        byte[]buffer=new byte[1024];
        String content="";
        int flag=0;
        while(true){
        try{
        if(!((flag=bufferedInputStream.read(buffer))!=-1))break;
        }catch(IOException e){
        e.printStackTrace();
        }
        content+=new String(buffer,0,flag);
        }
  • 問題4:在新建文件的時候,不知道在Android環境裏文件是在哪裏新建,也就是這裏出現了問題:

  • 問題4解決方案:問結對夥伴,得知是在res文件下新建Android Resource Directory,在裏面把type改成raw類型,以後在raw文件下建立text文本,最終解決問題。

其餘(感悟、思考等)

學習java不易,學習數據結構一樣不易。不管是哪一種語言,都要經歷自學和不斷摸索,固然摸索的過程是苦澀的,是很煩人的,是崩潰的,是無助的,但當本身把問題解決了以後,你會發現本身學到了不少知識,是曾經的本身所沒法匹敵的,也是本身所期待的。當全部問題都解決以後,永遠會有新的問題出現,繼續折磨你,若是說你感到無事可作,那種感受就和死了同樣,很恐怖,也會讓人墮落。人的一輩子都是在不斷創造問題解決問題,再創造問題的過程當中不斷前進,否認之否認,會讓咱們更強。

參考資料

  • 《Java程序設計與數據結構教程(第二版)》
  • 《Java程序設計與數據結構教程(第二版)》學習指導
相關文章
相關標籤/搜索