2017—2018 實驗報告:實驗一

實驗一:實驗報告

課程:程序設計與數據結構
班級: 1623
姓名: 張旭升
學號:20162329
指導教師:婁嘉鵬 王志強
實驗日期:9月25日

實驗密級: 非密級
預習程度: 已預習

必修/選修: 必修
實驗序號: cs_29

實驗名稱: Java線性表的應用,實現和分析

實驗內容

1. Java中的線性表的測試:過程,問題

2. Java中的線性表的應用:過程,問題

3. 順序表的實現(偽代碼,產品代碼,測試代碼):過程(分析,設計,實現,測試),問題

4. 鏈表的實現(偽代碼,產品代碼,測試代碼):過程(分析,設計,實現,測試),問題

5. Java ArrayList,LinkedList源碼分析:過程,學到的技巧

實驗要求


1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程

  1. 完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,注意實驗報告重點是 運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決 辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可 以得到什么啟示,有什么收獲,教訓等)。報告可以參考范飛龍老師的指導

  2. 嚴禁抄襲,有該行為者實驗成績歸零,并附加其他懲罰措施。


實驗過程

一.Java中線性表的測試

1.MyList類:

Java中提供了兩種線性表,分別是ArrayListLinkedList,我分別對它們每種類的其中三個主要方法進行了Junit單元測試:
ArrayListLinkedList
boolean : isEmpty()boolean : contains(Object o)
boolean : add(Object o)boolean : add(Object o)
Object : remove(int index)boolean : remove(Object o)

注意:

在測試中我發現,兩種線性表在Java源代碼中是受保護無法直接進行單元測試的,我只能自己寫一個MyList來繼承上面兩個類,然后通過將需要測試的方法復寫一下只需要調用父類的該方法就可以直接進行單元測試了。

2.測試結果及代碼

測試代碼

ArrayList測試代碼
LinkedList測試代碼

測試截圖

1065476-20170929210015965-2079493286.png

二.用Java線性表實現有序線性表的合并

實現代碼

  • 實現代碼
  • 測試代碼

    測試截圖

    1065476-20170929212710622-1030956481.png

三.用數組實現線性表

1.實現代碼分析:


創建數組線性表的思路和課上的Bag類是很類似的,具體做法也是在Bag類的基礎上進行了一些功能的改進,比如實現了存儲空間的自增長等

思路:

在每次往數組中線性的添加元素時都會進行一個判斷,如果數組已經沒有空位時,就會進行一個變換的操作,新建一個多10位的數組(數組初始大小為10)然后將原數組中的元素遍歷出來放入新建數組,然后將新建數組賦給原數組的引用,即使數組長度增加了10

2.實現代碼及測試

  • 實現代碼
  • 測試代碼

3.測試截圖

1065476-20171008155453918-1571786969.png

四.用鏈表實現線性表

1.實現代碼分析:

定義一個鏈表的類,然后在類中創建兩個變量,一個為泛型變量,一個是該類的對象,這個類的對象將會作為一個指針,在鏈表中每創建一個新的元素時,就會> > 實將指針實例化。

2.實現代碼及測試代碼

  • 實現代碼
  • 測試代碼

3.測試截圖1065476-20171008161025637-515268610.png

五.ArrayList與LinkedList源碼分析

1.源碼調取

我所分析的源碼是從IDEA中直接調取的,具體操作是在IDEA中連按兩次Shift鍵就會彈出一個搜索框,然后在搜索框中分別搜索ArrayList和LinkedList就可以調出 這兩個類的源代碼

2.源碼分析

1065476-20171008163718106-518910473.png

1.ArrayList是實現了基于動態數組的數據結構,LinkedList基于鏈表的數據結構。
2.對于隨機訪問get和set,ArrayList覺得優于LinkedList,因為LinkedList要移動指針。
3.對于新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。

參考資料:
java集合框架05——ArrayList和LinkedList的區別
Java中ArrayList和LinkedList區別

轉載于:https://www.cnblogs.com/Zhangxusheng/p/7612731.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257348.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257348.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

病床呼叫系統有顯示屏c語言,病床呼叫系統畢業設計

內容介紹完整版大學病床呼叫系統畢業設計,已修改完格式摘 要醫院已經從人工管理模式向智能化方向發展。“病床呼叫系統”可以實現對病房的智能化管理,可實現呼叫、求救警報、信息存儲、顯示等等功能。患者在住院期間,可能會在任意時間請求醫…

1. mybatis批量插入數據

通過list <insert id"saveByList" useGeneratedKeys"true" parameterType"java.util.List"> insert into T_App_Default_User(UserID,AppType,CreateTime)values <foreach collection"list" item"item" index&quo…

iOS開發 - Swift實現清除緩存功能

前言: 開發移動應用時&#xff0c;請求網絡資源是再常見不過的功能。如果每次都去請求&#xff0c;不但浪費時間&#xff0c;用戶體驗也會變差&#xff0c;所以移動應用都會做離線緩存處理&#xff0c;其中已圖片緩存最為常見。 但是時間長了&#xff0c;離線緩存會占用大量的…

c語言結構體單元測試,C語言結構體單元練習.doc

C語言結構體單元練習1.有以下定義和語句&#xff1a;struct student{ int age;int num; };struct student stu[3]{{1001,20},{1002,19},{1003,21}};main(){ struct student *p;pstu;…… }則以下不正確的引用是 。A) (p)->num B) p C) (*p).num D) p&stu.age2.有以下結構…

如何開啟IIS7以上的“IIS6管理兼容性”

護衛神PHP套件的安裝&#xff0c;需要開啟“IIS6管理兼容性”&#xff0c; 那么&#xff0c;如何開啟IIS7、IIS7.5、IIS8.0的IIS6兼容模式呢&#xff1f; 設置的時候&#xff0c;請參照如下截圖&#xff1a; 本文轉自黃聰博客園博客&#xff0c;原文鏈接&#xff1a;http://www…

pop to 特定的UIViewController

1. 我們可以推出到特定的UIViewController 2. 有一個類沒有navigationController&#xff0c;以前一般用delegate&#xff0c;我覺得我們可以把引用一個navigationController&#xff0c;然后使用它來推出另一個UIViewController轉載于:https://www.cnblogs.com/studyNT/p/4486…

藍橋杯:矩陣翻硬幣

題目地址&#xff1a;http://lx.lanqiao.org/problem.page?gpidT126 這道題強烈建議用java做&#xff0c;畢竟自帶BigInteger類。 此題看似是一道模擬題&#xff0c;但由于數據規模很大&#xff08;10的1000次方&#xff09;&#xff0c;只能找規律。規律是最終結果為sqrt(n)*…

ssh服務端口轉發詳解

端口轉發的概念和應用什么是端口轉發呢&#xff0c;我們知道&#xff0c;SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是&#xff0c;SSH 還同時提供了一個非常有用的功能&#xff0c;這就是端口轉發。它能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發&…

W ndoWs文件夾窗口,如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows).pdf

如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows)如何在本地網絡中訪問 Synology NAS 上的文件 (Windows)概述Synology NAS 經過專門設計&#xff0c;可快速簡單地在本地網絡中存儲和共享文件&#xff0c;讓您直接訪問 SynologyNAS 上的文件而沒有每次登錄 DSM 的麻煩。例…

左移與右移

左移 無論被移動的數是有符號還是無符號&#xff0c;左移一位相當于乘2(在不溢出的情形下) 右移 對于無符號數&#xff0c;右移一位相當于除以2&#xff1b; 對于有符號數&#xff0c;如果還想獲得同樣右移除以2的效果&#xff0c;就要考慮算數右移&#xff0c;即符號位始終不變…

Serializing Lua objects into Lua Code

The following little snippet allows you to ‘pickle’ Lua objects directly into Lua code (with the exception of functions, which are serialized as raw bytecode). Metatable support is on the way, but for now, it should be useful enough. Example code: view s…

布局管理器android,Android課程---布局管理器之相對布局(一)

下面示例的是在父容器里如何設置按鈕的位置&#xff0c;難度&#xff1a;***&#xff0c;重點是找到一個主按鈕&#xff0c;設置它的id&#xff0c;然后根據它來設置其他按鈕在父容器的位置。代碼示例&#xff1a;android:layout_width"match_parent"android:layout_…

【Cocos2d-Js基礎教學 入門目錄】

本教程視地址頻在&#xff1a;九秒課堂 完全免費從接觸Cocos2dx-Js以來&#xff0c;它的綻放的絢麗讓我無法不對它喜歡。我覺得Js在不斷帶給我們驚喜&#xff1b;在開發過程中&#xff0c;會大大提升我們對原型開發的利用率&#xff0c;使用Js語言做游戲開發&#xff0c;使游戲…

Hammer.js移動端觸屏框架的使用

hammer.js是一個多點觸摸手勢庫&#xff0c;能夠為網頁加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多點觸摸事件&#xff0c;免去自己監聽底層touchstart、touchmove、touchend事件并且寫一大堆判斷邏輯的痛苦。hammer.js不但支持觸摸屏設備的瀏覽器&#xff0c;在桌面瀏…

Android實現筆記本修改功能,安卓12第二個開發者預覽版推出:UI、功能有所改進...

最近谷歌正式推出了Android 12的第二個開發者預覽版&#xff0c;帶來了很多UI和功能上的改進。首先最明顯的變化應該是鎖屏界面和下拉通知欄的音樂播放器。此前這部分UI的配色一直采用的是音樂專輯的主色調&#xff0c;但在Android 12上&#xff0c;這個配色變成了系統的強調色…

Delphi編譯報錯對照表

; not allowed before ‘ELSE’ → ElSE前不允許有“;” ” clause not allowed in OLE automation section → 在OLE自動區段不允許“”子句 ” is not a type identifier → 不是類型標識符 ” not previously declared as a PROPERTY → 前面沒有說明PROPERTY ‘GOTO ‘ lea…

C語言中Union類型的使用方法

轉自&#xff1a;http://blog.csdn.net/feimor/article/details/6858103 使用C語言時&#xff0c;常常使用struct&#xff0c;對于union類型卻幾乎沒有用過&#xff0c;只知道它是聯合類型&#xff0c;各字段共享一塊內存&#xff0c;實際應用中卻不知道它的具體用途。 今天讀《…

android 點對點語音,使用Android SIP Stack進行點對點SIP呼叫?

我一直被困在同樣的問題上.如果你可以在沒有android sip api的情況下制作它,你可以查看rtp api,它為你提供了一些較低級別的工具來制作P2P VOIP應用程序,而無需服務器.To support audio conferencing and similar usages, you need toinstantiate two classes as endpoints for…

拓撲排序

用兩種方式來實現 1、 深度優先搜索&#xff08;DFS&#xff09; 對有向圖采取深度優先搜索&#xff0c;并且在postVist處&#xff0c;打印所訪問的節點。最后打印出的字符序列的反序列正好滿足拓撲排序。&#xff08;可以在postVist&#xff08;&#xff09;方法中&#xff0c…

阿里啟動NASA計劃創造新經濟核心科技

本文講的是阿里啟動"NASA"計劃創造新經濟核心科技【IT168 資訊】2017年3月9日&#xff0c;阿里巴巴集團在杭州召開首屆技術大會&#xff0c;動員全球兩萬多名科學家和工程師投身“新技術戰略”。會議透露&#xff0c;阿里巴巴正在啟動一項代號“NASA”的計劃&#xf…