導航:首頁 > 編程語言 > 數據結構與演算法分析java答案

數據結構與演算法分析java答案

發布時間:2023-05-28 05:03:38

『壹』 java:數據結構與演算法分析,編寫一個程序解決選擇問題。令k=N/2.畫出表格顯示程序對N取不同值時的運行時間

你好建議你看看瘋狂加java的視頻課程和書籍吧 李剛老師的書籍還是不錯的希望你了解下 學習下

『貳』 關於《數據結構與演算法分析 java語言描述》 的課後習題答案和項目設計的答案

http://download.csdn.net/download/tangzhnju/3688376, 別人的勞動成果,我只是搬運工,我下載看了下,好像不是所有題目都有答案,不過也很有參考意義
補充:不好意思,沒看清楚作者應該不是你需要的那一份

『叄』 幫忙做個關於數據結構與演算法的題(用java語言描述),謝謝!

題目只提供了isPresent方法的spec,沒有講其他的,尤其是insert方法,參數是什麼,是否需要多個重載?是在指定位置插入呢,還是怎樣?remove方鬧搭法也是,是液咐拿根據元素刪除呢,還是根據簡皮下標刪除?另外,這個題目就是自己寫一個ArrayList,樓主要是不會的話,可以自己參考JDK中java.util.ArrayList類的實現

『肆』 求數據結構與演算法分析高人幫忙做下這幾道題目。(希望能給出正確答案,在此謝過!!!)

填空題
1. n-1
因為隊尾指針總是指向空。
2. 1
因為無向圖的鄰接矩陣是對稱的。
3. 61
元素數量=
(rear+max-front) 當front > rear
(front+max-rear) 當rear > front
4. 深度優先搜索演算法

5.

判斷題
1. F
二叉樹就可以用數組存儲。
2. F
當發生沖突時,它要在下一個位置找,但如果該位置已被佔用,仍需要繼續向前。故同

義詞不一定相鄰。
3. F
圖的鄰接矩陣的行列數只取決於頂點數量。
4. F
沒有最快的排序演算法,只有特定條件下的相對較快。
5. T

選擇題
1. D
2. B
Loc(a[6]) = Loc(a[1]) + (6-1)*2
= 90 + 10 =100
3. A
4. C
5. C
進堆排序時,每個元素在最底下的葉子層都有,然後較大的非葉子結點存儲。

6. C
構造一棵二叉樹:
/
* +
A + - F
B C D E
對該二叉樹進行後序遍歷即可。

7. C
折半查找要求查找表有序,並且可以根據下標定位,要求是直接存取。
順序存儲方式:可直接存取,但插入刪除需耗時間
鏈式存儲方式:只能順序存取,插入刪除方便

8. D
二次探測再散列法:
addr(key) = (初始哈希值+di)%表長
di=1、-1、4、-4、9、-9...

addr(15) = 15 % 11 = 4
addr(38) = 38 % 11 = 5
addr(61) = 61 % 11 = 6
addr(84) = 84 % 11 = 7

addr(49) = 49 % 11 = 5 有沖突
addr(49) = (5+1)%14=6 有沖突
addr(49) = (5-1)%14=4 有沖突
addr(49) = (5+4)%14=9

9. D
執行p的後繼指針(next)指向p的直接後繼結點(next)的下一個結點(next)即可

『伍』 數據結構與演算法分析2.表、棧、隊列、字元串

線性表是 n 個數據元素的有限隊列,同一線性表中的元素必定具有相同的特性,即屬於同一數據對象,相鄰數據元素之間存在著序偶關系。

線性表的順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,通常是用數組實現。在Java語言中,主要是 java.util.ArrayList 實現。

線性表的鏈式存儲結構的特點是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的),所以對數據元素而言,除了存儲其本身的信息之外,還需要一個指示其後繼數據元素的信息。

棧(Stack)是限定只能在表尾進行插入或刪除的線性表。對棧來說, 表尾稱為棧頂,表頭稱為棧底 。棧又稱為後進先出線性表(LIFO,Last In First Out)。Java中由於 java.util.Stack 和 java.util.Vector 先天的設計問題,並不推薦使用;一般使用LinkedList來當作棧。
[圖片上傳失敗...(image-b267ad-1582731953399)]
[圖片上傳失敗...(image-72fd67-1582731953399)]

假設一個算術表達式中可以包含兩種括弧:圓括弧和方括弧,且這兩種括弧可按任意的次序嵌套使用,編寫判別給定表達式中所含括弧是否正確配對出現的演算法。

迷宮問題是棧的典型應用,棧通常也與回溯演算法連用,回溯演算法的基本描述是:

尚需說明一點的是,所謂當前位置可通,指的是未曾走到過的通道塊,即要求該方塊位置不僅是通道塊,而且既不在當前路徑上(否則所求路徑就不是簡單路徑),也不是曾經納入過路徑的通道塊(否則只能在死胡同內轉圈)。

為實現算符優先演算法,可以使用兩個工作棧。一個稱做OPTR,用以寄存運算符;另一個稱做OPND,用以寄存操作數或運算結果。演算法的基本思想如下:
(1) 首先置操作數棧OPND為空棧,表達式起始符"#"為運算符棧OPTR的棧底元素;
(2) 依次讀入表達式中每個字元,若是操作數則進OPND棧,若是運算符則和OPTR的棧頂元素符比較優先權後作相應操作,直至整個表達式求值完畢(即OPTR棧的棧頂元素和當前讀入的字元均為"#")。

一個直接調用自己或通過一系列的調用語句間接地調用自己的函數。

假設有3個分別命名為X、Y和Z的塔座,在塔座X上插有n階Hanoi塔個直徑大小各不相同、依小到大編號1,2,...,n的圓盤。現要求將X軸上的n階Hanoi塔個圓盤移至塔座Z上並仍按同樣順序疊排,圓盤移動時必須遵循下列規則:

用鏈表表示的隊列簡稱為鏈隊列。一個鏈隊列顯然需要兩個分別指示隊頭和隊尾的指針(分別稱為頭指針和尾指針)才能唯一確定。和線性表的單鏈表一樣,為了操作方便起見,我們也給鏈隊列添加一個 頭結點 ,並令頭指針指向頭結點。由此,空的鏈隊列的判斷條件為頭指針和尾指針均指向頭結點,如圖所示:

在實際使用隊列時,為了使隊列空間能重復使用,往往對隊列的使用方法稍加改進:無論插入或刪除,一旦rear指針增1或front指針增1時超出了所分配的隊列空間,就讓它指向這片連續空間的起始位置。自己真從MaxSize-1增1變到0,可用取余運算rear%MaxSize和front%MaxSize來實現。這實際上是把隊列空間想像成一個環形空間,環形空間中的存儲單元循環使用,用這種方法管理的隊列也就稱為循環隊列。
在循環隊列中,當隊列為空時,有front=rear,而當所有隊列空間全占滿時,也有front=rear。為了區別這兩種情況,規定循環隊列最多隻能有MaxSize-1個隊列元素,當循環隊列中只剩下一個空存儲單元時,隊列就已經滿了。因此,隊列判空的條件時front=rear,而隊列判滿的條件時front=(rear+1)%MaxSize。隊空和隊滿的情況如圖:

雙端隊列,是限定插入和刪除操作在表的兩端進行的線性表,盡管雙端隊列看起來比棧和隊列靈活,但實際上在應用程序中遠不及棧和隊列有用。

『陸』 JAVA數據結構與演算法

給你寫了答案如下,有問題再追問。

  1. B

  2. A

  3. C

  4. 確切性

  5. 3

  6. infexOf

  7. 隊頭指針指向隊尾

  8. 順序表:查找方便,但插入困難;

    鏈表:查找困難,但插入方便。

  9. //最大值
    publicstaticintgetMax(intn,int[]arr){//n是數組最後一個元素的index
    if(n==0)
    returnarr[0];
    if(arr[n]>getMax(n-1,arr))
    returnarr[n];
    returngetMax(n-1,arr);
    }
    //平均值
    publicstaticintgetAverage(intn,int[]arr){//n是數組最後一個元素的index
    if(n==1)
    returnarr[0];
    return(arr[n]+getAverage(n-1,arr)*(n-1))/n;
    }
  10. //刪除節點
    publicstaticNodermNode(Nodehead,Nodenode){
    Nodetemp=head;
    while(temp.next!=null){
    if(temp.next==node){
    temp.next=node.next;
    break;
    }
    else
    temp=temp.next;
    }
    returnhead;
    }
    //數組元素逆置
    publicstaticint[]inverseArray(int[]arr){
    intstart=0;
    intend=arr.length-1;

    for(;start<arr.length/2;start++,end--){
    inttemp=arr[start];
    arr[start]=arr[end];
    arr[end]=temp;
    }
    returnarr;

『柒』 java數據結構與演算法分析

於之前面試android的時候考到了很多關於java的知識,所以這次重溫數據結構知識就打算用java來學習,畢竟android是以java為基礎的,而且我現在學習的j2ee架構也是以java為基礎的。

java中的類就是對現實世界的對象的一種抽象,例如人就是一個類別,人有名字,聯系電話,住址等成員屬性,人擁有說話,吃飯,走路等成員方法。類就是這樣,定義了一種對象,它有什麼,會做什麼。

繼承——子類就是父類的一種特定類別。例如學生就是人的子類,學生屬於人,是特定的一類人。所以我們讓學生繼承人,這樣學生可以擁有人的屬性和方法,也就是說,學生也有了名字,聯系電話,住址等成員屬性,擁有說話,吃飯,走路等成員方法。但是學生還有特定的一些方法(讀書,上課),或者特定的一些屬性(學號,年級),這些可以添加在子類中。

因為每個子類都屬於父類,例如每個學生都屬於人,所以可以用父類來引用子類的對象:People p = new Student();反過來不行。

java中一個類只能繼承一個父類,也就是單繼承。

但一個類可以實現多個介面,間接地實現了多繼承。介面就是一系列方法的聲明,沒有實現。於之前面試android的時候考到了很多關於java的知識,所以這次重溫數據結構知識就打算用java來學習,畢竟android是以java為基礎的,而且我現在學習的j2ee架構也是以java為基礎的。

java中的類就是對現實世界的對象的一種抽象,例如人就是一個類別,人有名字,聯系電話,住址等成員屬性,人擁有說話,吃飯,走路等成員方法。類就是這樣,定義了一種對象,它有什麼,會做什麼。

繼承——子類就是父類的一種特定類別。例如學生就是人的子類,學生屬於人,是特定的一類人。所以我們讓學生繼承人,這樣學生可以擁有人的屬性和方法,也就是說,學生也有了名字,聯系電話,住址等成員屬性,擁有說話,吃飯,走路等成員方法。但是學生還有特定的一些方法(讀書,上課),或者特定的一些屬性(學號,年級),這些可以添加在子類中。

因為每個子類都屬於父類,例如每個學生都屬於人,所以可以用父類來引用子類的對象:People p = new Student();反過來不行。

java中一個類只能繼承一個父類,也就是單繼承。

但一個類可以實現多個介面,間接地實現了多繼承。介面就是一系列方

『捌』 數據結構與演算法試題,高分,求答案啊

給你第一題解法吧:後面的實在是不想做。

先根:ABCDEFGHI

中根:CBEDAGFHI

遍歷的基本方法:先左子樹後右子樹。

1,先根遍歷可以確定根節點為A,

2,依據1步,可以在中根遍歷中確定左子樹為:CBED,右為:GFHI

3,在可以重復1,2步。就可以得到結果。

A

BF

CDGH

I

4,O(n^3)+O(1)

『玖』 java數據結構和演算法

首先看存儲方式, 這個list, 只保存一個link的引用, 作為鏈表的頭, 然後通過這個頭.next, 得到第二個, 第二個.next得到第三個, 一次類推, 知道.next == null 的時候, 說明list結束.

那麼現在分兩種情況看:
1. 當當前鏈表裡面沒有元素的時候, 那麼就添加一個, 然後讓它的next = first, 也就是為null, 那麼鏈表在遍歷的時候, 訪問了第一個, 然後第一個.next == null, 鏈表就到頭了.

2.當當前鏈表裡面有元素的時候, 那麼因為方法叫做firstinsert, 也就是添加頭元素, 所以先聲明一個link = newlink, 然後讓newlink, 的next 指向之前list.first素, 那麼現在newlink就變成了第一個, 而之前那個變成了第二個, 然後再把newlink的引用賦給first, 這樣, 鏈表的頭就變成了newlink, 達到了first insert的目的.

first的引用就是我上面分析的兩種情況, 一種是沒有元素就是null, 另一種情況是有, 變成了第二個, 因為這個list要有結束的位置, 否則就無限長了, 結束的條件就是遍歷list的時候, 最後一個元素.next == null, 這樣list就停住了我大體畫個圖吧, 你看看:

第一種情況: 當隊列中沒有元素的時候
列表中什麼都沒有 : [ (head)null ]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> null
執行完first=newlink; [ (head){nl} -> null ];
這樣list的頭就是newlist, 只有它一個元素.

第二中情況: 當隊列中有元素的時候:
假設當前頭元素為{oldhead}
[ (head){oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> {oldhead}
執行完first=newlink; [ (head){nl} -> {oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
這樣list的頭就是newlist, 而oldhead就變成了第二個元素, 後面的元素以此類推.

『拾』 Java 與 演算法+數據結構 (100分)

說數據結構沒用那是不可能的,但是要看你做什麼了。

比如說你要血java,如果你想搞網站方面的話就簡單了。

數據結構基本可以不用學,因為在web應用中,能用到的演算法的地方少之又少,幾乎就那麼幾個,想記不住都難。

但是如果你要往軟體方面和手軟方面發展的話就要學一部分了,但是這東西學是學不到的,能學到的只不過是思路,到時候自己發揮一下,想個演算法就行了,演算法這東西說難不難,難的東西有,但是沒有你能用到的。

像你這樣的情況我想說兩點:

首先,說你想從事演算法類的工作,那麼選擇什麼樣的語言都是一樣的,演算法肯定有,但是用到的都不多。剛進公司的時候一般是用不到演算法的,因為演算法都是別人想的,你也許有好的演算法,但是別人不一定採用,但是你的演算法基礎不要丟掉,因為等你當了項目經理後這個是必不可少的。

其次,你要知道,在學計算機的路上,很少有人能學什麼就做什麼,大家都在被社會潮流推動,想要不掉隊就只能隨波逐流。因為畢竟我們都不想一輩子寫代碼。大家都是拿這東西做個跳板。

學java的路很長,但是也很有趣,希望你能學好。我想以你的演算法基礎,以後想成為專業精英不是問題。加油吧。

閱讀全文

與數據結構與演算法分析java答案相關的資料

熱點內容
伺服器端渲染的數據怎麼爬 瀏覽:163
壓縮空氣噴射器 瀏覽:488
python提高效率 瀏覽:796
華為文件管理怎麼樣輸入解壓碼 瀏覽:800
深思加密狗初始化 瀏覽:566
黃金崩潰pdf 瀏覽:309
華為特定簡訊息加密 瀏覽:375
微機原理與單片機技術李精華答案 瀏覽:816
pic12c508單片機 瀏覽:309
androidgps調用 瀏覽:226
金文編pdf 瀏覽:445
14乘87減147的簡便演算法 瀏覽:473
怎麼創建edu文件夾 瀏覽:721
演算法的基礎問題 瀏覽:256
蘋果手機怎麼選擇app支付 瀏覽:856
訪問加密伺服器失敗怎麼回事 瀏覽:439
程序員每天跑步5公里 瀏覽:789
黨員對程序員有幫助么 瀏覽:550
慢跑穿壓縮衣還是緊身衣 瀏覽:214
什麼伺服器引擎最好 瀏覽:497