資料結構(JAVA語言描述第三版)讀書筆記

來源:互聯網
上載者:User

 本書封面如下:

 

 

下面是我覺得有協助的一些知識:

 

page33 斷言
assert contain(a,answer):“maxof Array answer is not equal in the array”; 調用函數執行

 

page72 static method
the static keyword means that the method is not activated by any one object.
無法通過對象調用,必須通過建立的類之間調用。
例如distance為一個static方法,調用時Location.distance而不是p.distance

 

page107 關於數組值的傳遞
public static void put42s(int[] data)數組均是通過地址傳遞到函數中,這一點JAVA和C語言是類似的

 

page112 int...elements
public void addMany(int...element)
the method can be called with anynumber of integer arguments.表明輸入參數不唯一
addMany(8,4,4) addMany(1,2,3,4,5,6,7,8,9)

 

page133 clone函數
當類中包含數組的時候,clone函數執行需要進行額外的操作,不僅僅是調用a.clone(),需要針對每一個元素調用

 

page233 dummy nodes
在鏈表操作過程中,如果對鏈表頭結點和尾結點需要進行操作,為了避免錯誤,可以使用偽頭部和偽尾部。位於偽結點中的資料不屬於鏈表。使用好處是頭結點和尾結點的引用只需要設定一次即可,以後都可以保持不變,這樣避免了考慮各種複雜情況。

 

page244 object類型
Object obj這樣可以讓obj對象指向任何類型資料,例如
String s=new String("Objection overruled");
Object obj;
obj=s;

 

page248 boxing and unboxing封裝和解鎖
封裝是指一個值被轉換為一個對象和對應的類型,解鎖是逆過程,例子

int i=42;int j;Integer example;example = new Integer(i);// boxingexample=i;//autoboxingj=example.intValue();//unboxingj=example;//autounboxing

 

page338-340 運算式的中綴轉尾碼

字串括弧是完整的情況,例如(((A+7)*(B/C))-(2*D))
1.初始化一個棧,用來儲存操作符和括弧
2.do
   if(下個輸入是左括弧)
 讀取左括弧直接放入棧中
   else if(輸入是一個數字或其它符號)
 讀入然後把它輸出
   else if(輸入是操作符)
     讀入操作符放入棧中
   else
   {
  讀入並且拋棄下一個輸入(輸入肯定是右括弧)。棧的頂部肯定有一個操作符,把該操作符彈出並且輸出(如果沒有操作符就輸出錯誤資訊停止)在把操作符彈出後,棧頂端肯定有一個左括弧,彈出左括弧並拋棄(如果沒有表明括弧不匹配,給出錯誤提示資訊)
   }  
  while(有字串可讀)
 
3.最後棧肯定為空白,否則就輸出錯誤提示資訊

字串中括弧不完整的情況,例如2*(A-B)+3+C
1.初始化一個棧,用來儲存操作符合括弧
2.do
   if(下個輸入是左括弧)
 讀入左括弧直接放入棧中
   else if(下個輸入是數字或其它符號)
     讀入並直接輸出
   else if(下個輸入是操作符)
   {
     彈出並且列印操作符直到棧出現下面三種情況
  (1)棧為空白
  (2)棧中下一個符號是左括弧
  (3)棧中的下一個符號和下一個輸入符號相比優先順序要低
  當出現上面三種情況後,停止出棧操作,讀入下一個輸入字元,把字元壓入棧中
   }
   else
   {
   讀入並且拋棄下一個輸入(輸入肯定是右括弧)。棧的頂部肯定有一個操作符,把該操作符彈出並且輸出(如果沒有操作符就輸出錯誤資訊停止)在把操作符彈出後,棧頂端肯定有一個左括弧,彈出左括弧並拋棄(如果沒有表明括弧不匹配,給出錯誤提示資訊)
   }
   while(有字串可讀)
 
3.最後棧肯定為空白,否則就輸出錯誤提示資訊

page409 fractals

 

進行介面繪圖時可以調用遞迴演算法進行實現

public static void randomFractal(  int leftX,  int leftY,  int rightX,  int rightY,  Graphics drawingArea){ final int STOP=4; int midX,midY; int delta; if((rightX-leftX)<=STOP)   drawingArea.drawLine(leftX,leftY,rightX,rightY); else {   midX=(leftX+rightX)/2;   midY=(leftY+rightY)/2;   delta=(int)(Math.random()-0.5)*(rightX-leftX);   midY+=delta;   randomFractal(leftX,leftY,midX,midY,drawingArea);   randomFractal(midX,midY,rightX,rightY,drawingArea); }}

 

page591 hash時間
填滿因數為α,線性探測平均檢查元素個數為: 1/2*(1+1/(1-α))
double hashing 平均檢查元素個數為:-ln(1-α)/α
鏈式雜湊 平均檢查元素個數為:1+α/2

 

 

以上就是我這本書中獲得的一些補充知識

 

後記:這本800頁的書花了一個月的時間終於看完了,雖然不是一部很經典的書,但是正好幫我複習一下資料結構。老外的書我覺得很不錯,首先給出本章學習要點,明確目標,在結尾還進行總結。還有一點就是這本書不光是為了將資料結構而講資料結構,還穿插講了JAVA的一些知識以及物件導向的思想例如繼承虛函數這些,這一點是國內圖書做不到的。要多讀英文書,說的就是這個道理。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.