欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析

      時(shí)間:2019-05-13 12:12:45下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析》。

      第一篇:JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析

      JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析

      實(shí)用舉例:

      1:堆棧(stack)

      方法的參數(shù)值

      public void sun(int a , int b)

      //調(diào)用方法是在棧內(nèi)存中為參數(shù)分配存儲(chǔ)空間,方法結(jié)束自動(dòng)釋放。

      局部變量

      public static void main(String[] args){int a = 5;}

      //在方法中的局部變量,存儲(chǔ)在棧內(nèi)存中,方法結(jié)束時(shí)候,釋放內(nèi)存

      引用變量

      Person p = new Person(“zhaoyue”, 22);

      //調(diào)用構(gòu)造方法的時(shí)候,“形參”先在堆棧中開(kāi)辟內(nèi)存,存放“實(shí)參”,再把“實(shí)參”的//一份拷貝傳入對(duì)象之中。此時(shí),“實(shí)參”的拷貝存放在堆(heap)中,構(gòu)造方法結(jié)束,//堆棧中的內(nèi)存釋放。

      堆棧的存儲(chǔ)要領(lǐng):壓棧,出棧,自動(dòng)清除!

      2:堆(heap)

      成員變量

      public class Person{ String name;int age;}

      // New 的時(shí)候存儲(chǔ)在堆中。

      new得到的對(duì)象

      Person p = new Person(“zhaoyue”, 22);

      // New 的時(shí)候存儲(chǔ)在堆中。

      3:數(shù)據(jù)區(qū)(Data segment)

      3.1:靜態(tài)存儲(chǔ)(static storage)

      靜態(tài)變量

      public static int a = 5;

      //JVM運(yùn)行時(shí)首先為其開(kāi)辟空間,位置不變,程序運(yùn)行結(jié)束時(shí)空間釋放。并且在運(yùn)行時(shí)只加載一次。

      靜態(tài)方法

      public static void run(){print(“hello”);}

      //JVM運(yùn)行時(shí)首先為其開(kāi)辟空間,位置不變,程序運(yùn)行結(jié)束時(shí)空間釋放。并且在運(yùn)行時(shí)只加載一次。

      3.2地址池(address pool)

      非new的字符串

      String s = “hello world”;

      3.3常量存儲(chǔ)(constant storage)

      常量

      public final int a = 5;

      4:Code segment(代碼區(qū))

      4.1:Code segment

      存放代碼

      4.2:方法區(qū)(method area)

      成員方法

      Public void run(){System.out.println(“I’m run!”);}

      //類(lèi)裝載的時(shí)候存儲(chǔ)在方法區(qū),初始時(shí)被隱藏,實(shí)例化對(duì)象時(shí)被激活。

      具體解釋?zhuān)?/p>

      在java中有6中存取機(jī)制:

      1: 寄存器(register)

      2: 堆棧(stack)

      3: 堆(heap)

      4: 靜態(tài)存儲(chǔ)(static storage)

      5: 常量存儲(chǔ)(constant storage)

      6: 非RAM存儲(chǔ)寄存器(register):這是最快的存儲(chǔ)區(qū),因?yàn)樗挥诓煌谄渌鎯?chǔ)區(qū)的地方——處理器內(nèi)部。但是寄存器的數(shù)量極其有限,所以寄存器由編譯器根據(jù)需求進(jìn)行分配。你不能直接控制,也不能在程序中感覺(jué)到寄存器存在的任何跡象。堆棧(stack):位于通用RAM中,但通過(guò)它的“堆棧指針”可以從處理器哪里獲得支持。堆棧指針若向下移動(dòng),則分配新的內(nèi)存;若向上移動(dòng),則釋放那些內(nèi)存。這是一種快速有效的分配存儲(chǔ)方法,僅次于寄存器。創(chuàng)建程序時(shí)候,JAVA編譯器必須知道存儲(chǔ)在堆棧內(nèi)所有數(shù)據(jù)的確切大小和生命周期,因?yàn)樗仨毶上鄳?yīng)的代碼,以便上下移動(dòng)堆棧指針。這一約束限制了程序的靈活性,所以雖然某些JAVA數(shù)據(jù)存儲(chǔ)在堆棧中——特別是對(duì)象引用,但是JAVA對(duì)象不存儲(chǔ)其中。堆(heap):一種通用性的內(nèi)存池(也存在于RAM中),用于存放所有的JAVA對(duì)象。堆不同于堆棧的好處是:編譯器不需要知道要從堆里分配多少存儲(chǔ)區(qū)域,也不必知道存儲(chǔ)的數(shù)據(jù)在堆里存活多長(zhǎng)時(shí)間。因此,在堆里分配存儲(chǔ)有很大的靈活性。當(dāng)你需要?jiǎng)?chuàng)建一個(gè)對(duì)象的時(shí)候,只需要new寫(xiě)一行簡(jiǎn)單的代碼,當(dāng)執(zhí)行這行代碼時(shí),會(huì)自動(dòng)在堆里進(jìn)行存儲(chǔ)分配。當(dāng)然,為這種靈活性必須要付出相應(yīng)的代碼。用堆進(jìn)行存儲(chǔ)分配比用堆棧進(jìn)行存儲(chǔ)存儲(chǔ)需要更多的時(shí)

      間。

      4: 靜態(tài)存儲(chǔ)(static storage):這里的“靜態(tài)”是指“在固定的位置”。靜態(tài)存儲(chǔ)里存放程序運(yùn)行時(shí)一直存在的數(shù)據(jù)。你可用關(guān)鍵字static來(lái)標(biāo)識(shí)一個(gè)對(duì)象的特定元素是靜態(tài)的,但JAVA對(duì)象本身從來(lái)不會(huì)存放在靜態(tài)存儲(chǔ)空間里。

      5: 常量存儲(chǔ)(constant storage):常量值通常直接存放在程序代碼內(nèi)部,這樣做是安全的,因?yàn)樗鼈冇肋h(yuǎn)不會(huì)被改變。有時(shí),在嵌入式系統(tǒng)中,常量本身會(huì)和其他部分分割離開(kāi),所以在這種情況下,可以選擇將其放在ROM中

      6: 非RAM存儲(chǔ):如果數(shù)據(jù)完全存活于程序之外,那么它可以不受程序的任何控制,在程序沒(méi)有運(yùn)行時(shí)也可以存在。

      速度:

      就速度來(lái)說(shuō),有如下關(guān)系:

      寄存器 > 堆棧 > 堆 > 其他

      關(guān)系:

      然后我主要要說(shuō)下堆與堆棧的關(guān)系:

      堆:堆是heap,是所謂的動(dòng)態(tài)內(nèi)存,其中的內(nèi)存在不需要時(shí)可以回收,以分配給新的內(nèi)存請(qǐng)求,其內(nèi)存中的數(shù)據(jù)是無(wú)序的,即先分配的和隨后分配的內(nèi)存并沒(méi)有什么必然的位置關(guān)系,釋放時(shí)也可以沒(méi)有先后順序。一般由使用者自由分配,在C語(yǔ)言中malloc分配的就是堆,需要手動(dòng)釋放。

      堆棧:就是stack。實(shí)際上是只有一個(gè)出入口的隊(duì)列,即后進(jìn)先出(frist in , last out),先分配的內(nèi)存必定后釋放。一般由,由系統(tǒng)自動(dòng)分配,存放函數(shù)的參數(shù)值,局部變量等,自動(dòng)清除。

      還有,堆是全局的,堆棧是每個(gè)函數(shù)進(jìn)入的時(shí)候分一小塊,函數(shù)返回的時(shí)候就釋放了,靜態(tài)和全局變量,new得到的變量,都放在堆中,局部變量放在堆棧中,所以函數(shù)返回,局部變量就全沒(méi)了。

      JAVA中的基本類(lèi)型,其實(shí)需要特殊對(duì)待。因?yàn)?,在JAVA中,通過(guò)new創(chuàng)建的對(duì)象存儲(chǔ)在“堆”中,所以用new 創(chuàng)建一個(gè)小的、簡(jiǎn)單的變量,如基本類(lèi)型等,往往不是很有效。因此,在JAVA中,對(duì)于這些類(lèi)型,采用了與C、C++相同的方法。也就是說(shuō),不用new 來(lái)創(chuàng)建,而是創(chuàng)建一個(gè)并非是“引用”的“自動(dòng)”變量。這個(gè)變量擁有它的“值”,并置于堆棧中,因此更高效。

      再說(shuō)一說(shuō)類(lèi)的實(shí)例方法!

      類(lèi)的實(shí)例方法在內(nèi)存中是只有一份,不過(guò)肯定不會(huì)是第一個(gè)對(duì)象中,如果是第一個(gè)對(duì)象的話(huà),那么當(dāng)?shù)谝粋€(gè)對(duì)象被銷(xiāo)毀的時(shí)候,那么后面的對(duì)象就永遠(yuǎn)無(wú)法調(diào)用了。

      類(lèi)的實(shí)例方法存在一個(gè)專(zhuān)門(mén)的區(qū)叫方法區(qū)(method area),事實(shí)上類(lèi)剛裝載的時(shí)候就被裝載好了,不過(guò)它們?cè)凇八摺?只是這些方法必須當(dāng)有對(duì)象產(chǎn)生的時(shí)候才會(huì)“蘇醒”.(比如,一個(gè)輸出類(lèi)的成員變量的方法,如果連對(duì)象都沒(méi)有,何來(lái)的輸出成員變量).所以,方法在裝載的時(shí)候就有了,但是不可用,因?yàn)樗鼪](méi)有指象任何一個(gè)對(duì)象。

      而靜態(tài)的又不一樣了,靜態(tài)的東西存在靜態(tài)存儲(chǔ)(static storage)區(qū),他們和類(lèi)是一個(gè)等級(jí)的,就是說(shuō)只要類(lèi)被裝載,它們就可以直接用.(用類(lèi)名來(lái)調(diào)用).他們不依賴(lài)與任何對(duì)象,所以也不能輸出任何對(duì)象的成員屬性.(除非成員屬性也是靜態(tài)的).每個(gè)對(duì)象在new的時(shí)候都會(huì)在堆區(qū)中開(kāi)辟內(nèi)存,用來(lái)保存對(duì)象的屬性和方法.(實(shí)際上方法保存的只是方法區(qū)的引用,如果保存的是方法本身,那么試想一下,有多少個(gè)對(duì)象就得有多少個(gè)方法,那么又和第一點(diǎn)中“實(shí)例方法在內(nèi)存中只有一份拷貝”相矛盾了。另外我補(bǔ)充一點(diǎn),在父類(lèi)的引用指向子類(lèi)對(duì)象的時(shí)候,父類(lèi)可以調(diào)用子類(lèi)從父類(lèi)繼承的屬性和方法,子類(lèi)覆寫(xiě)父類(lèi)的屬性和方法,在動(dòng)態(tài)綁定(也就是多態(tài))時(shí),子類(lèi)對(duì)象有一個(gè)方法區(qū)得引用,動(dòng)態(tài)new的時(shí)候這個(gè)引用指向子類(lèi)的方法,從而實(shí)現(xiàn)了父類(lèi)可以調(diào)用子類(lèi)覆寫(xiě)父類(lèi)的方法。這也是動(dòng)態(tài)綁定得名的原因。)

      如果您認(rèn)真看完這篇文章,估計(jì)java中內(nèi)存方面肯定會(huì)有所幫助,這篇文章是我總結(jié)歸納出來(lái)的,并非完全自己寫(xiě)的。有什么不對(duì)的地方,歡迎批評(píng)指正。

      第二篇:java部分?jǐn)?shù)據(jù)結(jié)構(gòu)總結(jié)

      package datastructtest;

      import java.io.File;

      import java.io.FileReader;

      import java.io.FileWriter;

      import java.io.IOException;

      import java.util.LinkedList;

      import java.util.Scanner;

      import javax.swing.JFrame;

      public class Testbase {

      public static void main(String[] args)throws IOException{

      //100之內(nèi)被3或7整除的數(shù)的個(gè)數(shù)

      //int m=0,n=0;

      //for(int i=0;i<100;i++){

      //if(i%3==0){

      //m++;

      //}

      //if(i%7==0){

      //n++;

      //}

      //}

      //System.out.println(“m=”+m+“ ;”);

      //System.out.println(“n=”+n+“ ;”);

      //1~100之間的整數(shù)累加和,并顯示每個(gè)整數(shù)和當(dāng)前累加和的對(duì)應(yīng)關(guān)系 //int sum=0;

      //for(int i=1;i<=100;i++){

      //

      //System.out.print(“i=”+i+“,sum=”+sum);

      //sum+=i;

      //System.out.println(“;i+sum=”+sum);

      //}

      //計(jì)算30的階乘

      //int m=jiecheng(30);

      //System.out.println(m);

      //直接插入排序

      //int[] test={64,5,7,89,6,24};

      //int n=test.length;

      //insertSort(test);

      //for(int i=0;i

      //System.out.print(test[i]+“,”);

      //}

      //希爾排序

      //int[] test={65,34,25,87,12,38,56,46,14,77,92,33};//int n=test.length;

      //int d[]={6,3,1};//每次循環(huán)用到的增量值

      //int numOfD=d.length;//共進(jìn)行幾次循環(huán)

      //shellSort(test,d,numOfD);

      //for(int i=0;i

      //System.out.print(test[i]+“,”);

      // }

      //直接選擇排序

      //int[] test={65,34,25,87,12,38,56,46,14,77,92,33};

      //int n=test.length;

      //

      //selectSort(test);

      //for(int i=0;i

      //System.out.print(test[i]+“,”);

      // }

      ////字符串逆轉(zhuǎn)

      //char[]a={'a','f','g','h','j'};

      //char[]b=reverse1(a);

      //for(int i=0;i

      //System.out.print(b[i]+“,”);

      //}

      //Scanner類(lèi)的應(yīng)用和split的使用

      //System.out.println(“請(qǐng)輸入帶逗號(hào)的字符:”);

      //Scanner sc=new Scanner(System.in);

      //

      //while(sc.hasNext()){

      //StringBuffer str=new StringBuffer();

      //str=str.append(sc.next());

      ////System.out.println(str);

      //String st=str.toString();

      //String[] a=st.split(“,”);

      //System.out.println(“字符串被逗號(hào)分割之后:”);

      //for(int i=0;i

      //System.out.println(a[i]);

      //}

      //}

      //寫(xiě)文件和讀文件復(fù)制文件aa到bb

      //FileReader filein=new FileReader(new File(“d://aa.txt”));//此句會(huì)產(chǎn)生異常

      //FileWriter fileout=new FileWriter(new File(“d://bb.txt”));//int c;

      //while((c=filein.read())!=-1){

      //fileout.write(c);

      //}

      //filein.close();

      //fileout.close();

      //

      }

      private static int jiecheng(int n){

      if(n==1)

      return 1;

      else

      return n*jiecheng(n-1);

      }

      //棧

      private LinkedList list=new LinkedList();

      public void push(Object v){

      list.addFirst(v);

      }

      public Object top(){

      return list.getFirst();

      }

      public Object pop(){

      return list.removeFirst();

      }

      //直接插入排序

      public static void insertSort(int[] a){

      int i,j,temp;

      int n=a.length;

      for(i=0;i

      temp=a[i+1];

      j=i;

      while(j>-1&&temp<=a[j]){

      a[j+1]=a[j];

      j--;

      }

      a[j+1]=temp;

      }

      //for(i=0;i

      //temp=a[i+1];

      //// j=i;

      //while(i>-1&&temp<=a[i]){

      //a[i+1]=a[i];

      //i--;

      //}

      //a[i+1]=temp;

      //}

      }

      //希爾排序

      public static void shellSort(int[]a,int[]d,int numOfD){

      int i,j,k,m,span;

      int temp;

      int n=a.length;

      for(m=0;m

      span=d[m];//取本次的增量值

      for(k=0;k

      for(i=k;i

      temp=a[i+span];

      j=i;

      while(j>-1&&temp<=a[j]){

      a[j+span]=a[j];

      j=j-span;

      }

      a[j+span]=temp;

      }

      }

      }

      }

      //直接選擇排序

      public static void selectSort(int[]a){

      int i,j,small;

      int temp;

      int n=a.length;

      for(i=0;i

      small=i;//設(shè)第i個(gè)數(shù)據(jù)元素最小

      for(j=i+1;j

      if(a[j]

      if(small!=i){

      temp=a[small];

      for(j=small;j>i;j--)//把該區(qū)段尚未排序元素依次后移

      a[j]=a[j-1];

      a[i]=temp;//插入找出的最小元素

      }

      }

      }

      public static char[] reverse1(char[]a){

      int n=a.length;

      char[]b=new char[n];

      for(int i=0;i

      b[n-i-1]=a[i];

      }

      return b;

      }

      }

      第三篇:java數(shù)據(jù)結(jié)構(gòu)測(cè)試題及答案解析

      Java數(shù)據(jù)結(jié)構(gòu)試題及解析 下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是__A____。

      A、順序存儲(chǔ)的有序線(xiàn)性表 B、線(xiàn)性鏈表 C、二叉鏈表 D、有序線(xiàn)性鏈表

      解析:二分法查找只適用于順序存儲(chǔ)的有序表。在此所說(shuō)的有序表是指線(xiàn)性表中的元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。

      在軟件設(shè)計(jì)中,不屬于過(guò)程設(shè)計(jì)工具的是__D____。

      A、PDL(過(guò)程設(shè)計(jì)語(yǔ)言)B、PAD圖 C、N-S圖 D、DFD圖

      解析:軟件設(shè)計(jì)工具包括:程序流程圖、N-S、PAD、HIPO,判定表,PDL(偽碼)。而DFD(數(shù)據(jù)流圖)屬于結(jié)構(gòu)化分析工具。在switch(expression)語(yǔ)句中,expression的數(shù)據(jù)類(lèi)型不能是__A____。

      A、double B、char C、byte D、short

      解析:表達(dá)式expression只能返回這個(gè)幾種類(lèi)型的值:int、byte、short和char。多分支語(yǔ)句把表達(dá)式返回的值依次與每個(gè)case子句中的值相比較,如果遇到匹配的值,則執(zhí)行該case子句后的語(yǔ)句序列。下列敘述中,錯(cuò)誤的是__D____。

      A、父類(lèi)不能替代子類(lèi) B、子類(lèi)能夠替代父類(lèi) C、子類(lèi)繼承父類(lèi) D、父類(lèi)包含子類(lèi)

      通過(guò)繼承實(shí)現(xiàn)代碼復(fù)用:

      Java中所有的類(lèi)都是通過(guò)直接或間接地繼承java.lang.Object類(lèi)得到的。繼承而得到的類(lèi)稱(chēng)為子類(lèi),被繼承的類(lèi)稱(chēng)為父類(lèi)。子類(lèi)不能繼承父類(lèi)中訪(fǎng)問(wèn)權(quán)限為private的成員變量和方法,子類(lèi)可以重寫(xiě)父類(lèi)的方法,及命名與父類(lèi)同名的成員變量。

      子類(lèi)通過(guò)隱藏父類(lèi)的成員變量和重寫(xiě)父類(lèi)的方法,把父類(lèi)的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。注意:子類(lèi)中重寫(xiě)的方法和父類(lèi)中被重寫(xiě)的方法要具有相同的名字,相同的參數(shù)表和相同的返回類(lèi)型,只是函數(shù)體不同。

      由于子類(lèi)繼承了父類(lèi)所有的屬性(私有的除外),所以子類(lèi)對(duì)象可以作為父類(lèi)對(duì)象使用。程序中凡是使用父類(lèi)對(duì)象的地方,都可以用子類(lèi)對(duì)象來(lái)代替。一個(gè)對(duì)象可以通過(guò)引用子類(lèi)的實(shí)例來(lái)調(diào)用子類(lèi)的方法。

      java運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例,來(lái)決定調(diào)用哪個(gè)方法。對(duì)子類(lèi)的一個(gè)實(shí)例,如果子類(lèi)重寫(xiě)了父類(lèi)的方法,則運(yùn)行時(shí)系統(tǒng)調(diào)用子類(lèi)的方法;如果子類(lèi)繼承了父類(lèi)的方法(未重寫(xiě)),則運(yùn)行時(shí)系統(tǒng)調(diào)用父類(lèi)的方法。自定義表格類(lèi)中的model部分應(yīng)實(shí)現(xiàn)的接口是___A___。

      A、AbstractTableModel B、JTable C、TableModel D、TableModelable 下列代碼中,將引起編譯錯(cuò)誤的行是__B____。

      1)public class Exercise{

      2)public static void main(String args[]){

      3)float f=0.0;

      4)f+=1.0;

      5)}

      6)}

      A、第2行 B、第3行 C、第4行 D、第6行

      解析:float定義變量賦值時(shí),需要在數(shù)值后面加f以標(biāo)識(shí)它為浮點(diǎn)型,讓系統(tǒng)知道該給它精確到多少位。下列關(guān)于Java多線(xiàn)程并發(fā)控制機(jī)制的敘述中,錯(cuò)誤的是___B___。

      A、Java中對(duì)共享數(shù)據(jù)操作的并發(fā)控制是采用加鎖技術(shù)

      B、線(xiàn)程之間的交互,提倡采用suspend()/resume()方法

      C、共享數(shù)據(jù)的訪(fǎng)問(wèn)權(quán)限都必須定義為private

      D、Java中沒(méi)有提供檢測(cè)與避免死鎖的專(zhuān)門(mén)機(jī)制,但應(yīng)用程序員可以采用某些策略防止死鎖的發(fā)生 解析:

      1)Java中對(duì)共享數(shù)據(jù)操作的并發(fā)控制是采用傳統(tǒng)的封鎖技術(shù)。一個(gè)程序中單獨(dú)的、并發(fā)的線(xiàn)程對(duì)同一個(gè)對(duì)象進(jìn)行訪(fǎng)問(wèn)的代碼段,稱(chēng)為臨界區(qū)。在Java語(yǔ)言中,臨界區(qū)可以是一個(gè)語(yǔ)句塊或是一個(gè)方法,并且用“synchronized”關(guān)鍵字標(biāo)識(shí)。Java平臺(tái)將每個(gè)由synchronized(Object)語(yǔ)句指定的對(duì)象設(shè)置一個(gè)鎖,稱(chēng)為對(duì)象鎖。

      2)共享數(shù)據(jù)的所有訪(fǎng)問(wèn)都必須作為臨界區(qū),使用“synchronized”進(jìn)行加鎖控制。用“synchronized”保護(hù)的數(shù)據(jù)也必須是私有的,使線(xiàn)程不能直接訪(fǎng)問(wèn)這些數(shù)據(jù),必須通過(guò)對(duì)象的方法。

      3)Java中沒(méi)有檢測(cè)與避免死鎖的專(zhuān)門(mén)機(jī)制,因此完全由程序進(jìn)行控制,防止死鎖的發(fā)生。

      4)有時(shí),某個(gè)線(xiàn)程進(jìn)入“synchronized”塊后,共享數(shù)據(jù)的狀態(tài)并不一定滿(mǎn)足線(xiàn)程的需要,它要等待其他線(xiàn)程將共享數(shù)據(jù)改變?yōu)樗枰臓顟B(tài)后才能繼續(xù)執(zhí)行,但由于此時(shí)它占有了該對(duì)象的鎖,其他線(xiàn)程無(wú)法對(duì)共享數(shù)據(jù)進(jìn)行操作,為此Java引入wait()和notify(),這兩個(gè)方法使java.lang.object類(lèi)的方法,使實(shí)現(xiàn)線(xiàn)程通信的兩個(gè)方法。

      下列操作中,不屬于Applet安全限制的是___D___。

      A、加載本 B、讀寫(xiě)本地文件系統(tǒng) C、運(yùn)行本地可執(zhí)行程序 D、與同一個(gè)頁(yè)面中的Applet通信 在進(jìn)行模塊測(cè)試時(shí),要為每個(gè)被測(cè)試的模塊另外設(shè)計(jì)兩類(lèi)模塊:驅(qū)動(dòng)模塊和承接模塊(樁模塊)。其中,驅(qū)動(dòng)模塊相當(dāng)于被測(cè)試模塊的主程序,它接收測(cè)試數(shù)據(jù),并傳給被測(cè)試模塊,輸出實(shí)際測(cè)試結(jié)果。承接模塊通常用于代替被測(cè)試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個(gè)模擬子程序,不必將子模塊的所有功能帶入。

      Java語(yǔ)言具有可移植性、高性能、健壯性、安全性和獨(dú)立于體系結(jié)構(gòu)的__跨平臺(tái)____特點(diǎn)。

      解析:Java語(yǔ)言是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο蟮木幊陶Z(yǔ)言。具體來(lái)說(shuō),它具有如下特性:簡(jiǎn)單性、面向?qū)ο蟆⒎植际?、解釋型、可靠、安全、平臺(tái)無(wú)關(guān)、可移植、高性能、多線(xiàn)程、動(dòng)態(tài)性等。在運(yùn)行時(shí),由Java解釋器自動(dòng)導(dǎo)入,而不用import語(yǔ)句引入的包是__java.lang____。

      解析:因?yàn)榘黬ava.lang所包含的類(lèi)和接口對(duì)所有實(shí)際的Java程序都是必要的,所以,它被自動(dòng)導(dǎo)入所有的程序且它是Java最廣泛使用的包。下列程序的功能是創(chuàng)建了一個(gè)顯示5個(gè)“Hello!”的線(xiàn)程并啟動(dòng)運(yùn)行,請(qǐng)將程序補(bǔ)充完整。

      public class ThreadTest extends Thread{

      public static void main(String args[]){

      ThreadTest t=new __ThreadTest()____;

      t.start();}

      public void run(){int i=0;

      while(true){System.out.println(“Hello!”);

      if(i++==4)break;

      }

      }

      解析:ThreadTest繼承java.lang.Thread類(lèi),重寫(xiě)了run()方法,實(shí)現(xiàn)了Java中的線(xiàn)程。ThreadTest t定義了空的線(xiàn)程對(duì)象,下面t.start()啟動(dòng)了這個(gè)線(xiàn)程,因此ThreadTest t=new ______;就應(yīng)該是實(shí)例化該線(xiàn)程對(duì)象,所以空格中應(yīng)填ThreadTest()。

      Swing的頂層容器有:JApplet、JWindow、JDialog和__JFrame____。

      頂層容器:JFrame、JApplet、JDialog和JWindow共4個(gè)。

      中間容器:JPanel、JScrollPane、JSplitPane、JToolBar。

      特殊容器:JInternalFrame、JLayeredPane、JRootPane。

      基本控件:JButton、JComboBox、JList、JMenu、JSlider、JTextField。

      不可編輯信息的構(gòu)件:JLabel、JProgressBar、ToolTip、可編輯信息的構(gòu)件:JColorChooser、JFileChooser、JFileChooser、JTable、JTextArea 所有的這些構(gòu)件的分類(lèi)都是按功能來(lái)劃分的。14 下列敘述中正確的是___D___。

      A、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲(chǔ)結(jié)構(gòu)

      B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線(xiàn)性結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)屬于非線(xiàn)性結(jié)構(gòu)

      C、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu),且各種存儲(chǔ)結(jié)構(gòu)不影響數(shù)據(jù)處理的效率

      D、一個(gè)邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu),且各種存儲(chǔ)結(jié)構(gòu)影響數(shù)據(jù)處理的效率

      解析:一般來(lái)說(shuō),一種數(shù)據(jù)的邏輯結(jié)構(gòu)根據(jù)需要可以表示成多種存儲(chǔ)結(jié)構(gòu),常用的存儲(chǔ)結(jié)構(gòu)有順序、鏈接、索引等存儲(chǔ)結(jié)構(gòu)。而采用不同的存儲(chǔ)結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。

      Java的圖形用戶(hù)界面的最基本的組成部分就是構(gòu)件(Component),構(gòu)件是一個(gè)可以以圖形化的方式顯示在屏幕上并能與用戶(hù)交互的對(duì)象,但構(gòu)件不能獨(dú)立地顯示出來(lái),必須將構(gòu)件放在一定的容器中才可以顯示出來(lái)。解析:容器Container是一個(gè)類(lèi),因?yàn)槿萜鞅旧硪彩且粋€(gè)構(gòu)件,具有構(gòu)件的所有性質(zhì),因此繼承之Component類(lèi)。

      下列敘述中,錯(cuò)誤的是__A____。

      A、File類(lèi)能夠存儲(chǔ)文件 B、File類(lèi)能夠讀寫(xiě)文件C、File類(lèi)能夠建立文件D、File類(lèi)能夠獲取文件目錄信息

      解析:文件類(lèi)File是java.io包中的一個(gè)重要的非流類(lèi),它以一種與系統(tǒng)無(wú)關(guān)的方式表示一個(gè)文件對(duì)象的屬性。而目錄在Java中作為一種特殊文件,即文件名的列表,通過(guò)類(lèi)File所提供的方法,可得到文件或目錄的描述信息(包括名字、路徑、長(zhǎng)度、可讀、可寫(xiě)等),也可以生成新文件、目錄、修改文件和目錄,查詢(xún)文件屬性,重命名文件或者刪除文件。

      下列敘述中,正確的是___C___。

      A、Reader是一個(gè)讀取字符文件的接口 B、Reader是一個(gè)讀取數(shù)據(jù)文件的抽象類(lèi)

      C、Reader是一個(gè)讀取字符文件的抽象類(lèi) D、Reader是一個(gè)讀取字節(jié)文件的一般類(lèi)

      解析:Java中的流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個(gè)抽象類(lèi)來(lái)表示(每種流包括輸入和輸出兩種,所以一共四個(gè)):InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來(lái)的。

      在這其中InputStream和OutputStream在早期的Java版本中就已經(jīng)存在了,它們是基于字節(jié)流的,而基于字符流的Reader和Writer是后來(lái)加入作為補(bǔ)充的。在這四個(gè)抽象類(lèi)中,InputStream和Reader定義了完全相同的接口:

      int read()

      int read(char cbuf[])

      int read(char cbuf[], int offset, int length)

      而OutputStream和Writer也是如此:

      int write(int c)

      int write(char cbuf[])

      int write(char cbuf[], int offset, int length)用于輸入壓縮文件格式的ZipInputStream類(lèi)所屬包是___D___。

      A、java.util B、java.io C、java.nio D、java.util.zip

      解析:ZipInputStream該對(duì)象用于從ZIP壓縮文件中創(chuàng)建輸入流對(duì)象。

      對(duì)象定義結(jié)構(gòu):java.util.zip.ZipInputStream

      靜態(tài)成員變量:CENATT、CENATX、CENCRC……,這些靜態(tài)成員變量用于定義在壓縮過(guò)程中采用的壓縮算法。

      構(gòu)造方法:ZipInputStream(InputStream in)應(yīng)用輸入流對(duì)象創(chuàng)建從ZIP文件中讀取數(shù)據(jù)的輸入流對(duì)象。

      成員方法:

      int available()判斷當(dāng)前入口指定的壓縮原始文件中是否還有未讀數(shù)據(jù)。

      void close()關(guān)閉ZIP輸入流對(duì)象。

      void closeEntry()關(guān)閉被讀取的ZIP入口,并移動(dòng)到下一壓縮原始文件入口。

      protectedZipEntry createZipEntry(String name)利用指定的名稱(chēng)創(chuàng)建ZipEntry對(duì)象實(shí)例。

      ZipEntry getNextEntry()將輸入流對(duì)象移動(dòng)到下一入口對(duì)象。

      int read(byte[] b, int off, int len)從當(dāng)前ZipEntry中讀取字節(jié)數(shù)組。

      long skip(long n)將輸入流指定的讀取數(shù)據(jù)位置移動(dòng)n個(gè)字節(jié)。

      在Swing中用輕量級(jí)的構(gòu)件替代了AWT中的重量級(jí)的構(gòu)件,而且Swing的替代構(gòu)件中都包含有一些其他的特性。與AWT構(gòu)件不同,Swing構(gòu)件不能直接添加到頂層容器中,它必須添加到一個(gè)與Swing頂層容器相關(guān)聯(lián)的內(nèi)容面板(contentPane)上。

      查找隨機(jī)文件的記錄時(shí),應(yīng)使用的方法是___C___。

      A、readInt()B、readBytes(int n)C、seek(long l)D、readDouble()

      文件操作中經(jīng)常需要的是隨機(jī)訪(fǎng)問(wèn),Java中的RandomAccessFile類(lèi)提供隨機(jī)訪(fǎng)問(wèn)文件的功能,其中的seek方法實(shí)現(xiàn)了查找隨機(jī)文件記錄的功能,格式如下:

      void seek(long pos);//用于移動(dòng)文件指針到指定的位置 20 下列關(guān)于棧的描述中錯(cuò)誤的是___B___。

      A、棧是先進(jìn)后出的線(xiàn)性表 B、棧只能順序存儲(chǔ) C、棧具有記憶作用

      D、對(duì)棧的插入與刪除操作中,不需要改變棧底指針 21 對(duì)于長(zhǎng)度為n的線(xiàn)性表,在最壞情況下,下列各排序法所對(duì)應(yīng)的比較次數(shù)中正確的是___D___。

      A、冒泡排序?yàn)閚/2 B、冒泡排序?yàn)閚 C、快速排序?yàn)閚 D、快速排序?yàn)閚(n-1)22 對(duì)長(zhǎng)度為n的線(xiàn)性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為_(kāi)_C____。

      A、B、n/2 C、n D、n+1 23 在進(jìn)行順序查找過(guò)程中,如果線(xiàn)性表中的第一個(gè)元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線(xiàn)性表中的最后一個(gè)元素,或者被查找的元素根本就不在線(xiàn)性表中,則為了查找這個(gè)元素需要與線(xiàn)性表中所有的元素進(jìn)行比較,這是順序查找的最壞情況。所以對(duì)長(zhǎng)度為n的線(xiàn)性表進(jìn)行順序查找,在最壞情況下需要比較n次。模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),耦合與內(nèi)聚是相互關(guān)聯(lián)的。在程序結(jié)構(gòu)中,各模塊的內(nèi)聚性越強(qiáng),則耦合性越弱。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。

      計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件具有以下特點(diǎn):①軟件是一種邏輯實(shí)體,而不是物理實(shí)體,具有抽象性;②軟件的生產(chǎn)過(guò)程與硬件不同,它沒(méi)有明顯的制作過(guò)程;③軟件在運(yùn)行、使用期間不存在磨損、老化問(wèn)題;④軟件的開(kāi)發(fā)、運(yùn)行對(duì)計(jì)算機(jī)系統(tǒng)具有依賴(lài)性,受計(jì)算機(jī)系統(tǒng)的限制,這導(dǎo)致軟件移植的問(wèn)題;⑤軟件復(fù)雜性高,成本昂貴;⑥軟件開(kāi)發(fā)涉及諸多的社會(huì)因素。

      數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫(kù)技術(shù)的重要特點(diǎn)之一。所謂數(shù)據(jù)獨(dú)立性是指__D____。

      A、數(shù)據(jù)與程序獨(dú)立存放 B、不同的數(shù)據(jù)被存放在不同的文件中

      C、不同的數(shù)據(jù)只能被對(duì)應(yīng)的應(yīng)用程序所使用 D、以上三種說(shuō)法都不對(duì)

      在讀字符文件Employee.dat時(shí),使用該文件作為參數(shù)的類(lèi)是___D___。

      A、BufferedReader B、DataInputStream C、DataOutputStream D、FileInputStream 下列不是InputStream子類(lèi)的是__C____。

      A、文件輸入流FileInputStream B、對(duì)象輸入流ObjectInputStream

      C、字符輸入流CharInputStream D、壓縮文件輸入流ZipInputStream 28 Java中沒(méi)有CharInputStream流。

      下列方法中可以用來(lái)創(chuàng)建一個(gè)新線(xiàn)程的是___C___。

      A、實(shí)現(xiàn)java.lang.Runnable接口并重寫(xiě)start()方法

      B、實(shí)現(xiàn)java.lang.Runnable接口并重寫(xiě)run()方法

      C、繼承java.lang.Thread類(lèi)并重寫(xiě)run()方法

      D、繼承java.lang.Thread類(lèi)并重寫(xiě)start()方法 下列關(guān)于線(xiàn)程優(yōu)先級(jí)的說(shuō)法中,正確的是__C____。

      A、線(xiàn)程的優(yōu)先級(jí)是不能改變的 B、線(xiàn)程的優(yōu)先級(jí)是在創(chuàng)建線(xiàn)程時(shí)設(shè)置的 C、在創(chuàng)建線(xiàn)程后的任何時(shí)候都可以設(shè)置 D、B和C 下列代碼中,將引起一個(gè)編譯錯(cuò)誤的行是__D____。

      1)public class Test{

      2)int m,n;

      3)public Test(){}

      4)public Test(int a){m=a;}

      5)public static void main(String args[]){

      6)Test t1,t2;

      7)int j,k;

      8)j=0;k=0;

      9)t1=new Test();

      10)t2=new Test(j,k);

      11)}

      12)}

      A、第3行 B、第5行 C、第6行 D、第10行

      閱讀下列代碼后

      public class Person{

      int arr[]=new int[10];

      public static void main(String args[]){

      System.out.println(arr[1]);

      }

      }

      正確的說(shuō)法是__A____。

      A、編譯時(shí)將產(chǎn)生錯(cuò)誤 B、編譯時(shí)正確,運(yùn)行時(shí)將產(chǎn)生錯(cuò)誤 C、輸出為零 D、輸出為空

      32請(qǐng)閱讀下列程序代碼,然后將程序的執(zhí)行結(jié)果補(bǔ)充完整。

      程序代碼:

      class throwsException

      {

      static void Proc(int sel)throws ArithmeticException,ArrayIndexOutOfBoundsException

      {

      System.out.println(“In Situation”+sel);

      if(sel==0){

      System.out.println(“no Exception caught”);

      return;

      }

      else if(sel==1){

      int iArray[]=new int[4];

      iArray[1]=3;

      }

      }

      public static void main(String[] args)

      {

      try{

      Proc(0);

      Proc(1);

      }catch(ArrayIndexOutOfBoundsException e){

      System.out.println(“Catch”+e);

      }finally{

      System.out.println(“in Proc finally”);

      }

      }

      } 執(zhí)行結(jié)果:

      In Situation0

      no Exception caught

      __In Situation1____

      in Proc finally

      解析:調(diào)用Proc(1)時(shí),執(zhí)行語(yǔ)句System.out.println(“In Situation”+sel);控制臺(tái)輸出In Situation1。然后在if語(yǔ)句中執(zhí)行sel==1分支,該分支中無(wú)任何輸出語(yǔ)句。

      當(dāng)使用Thread t=new Thread(r)創(chuàng)建一個(gè)線(xiàn)程時(shí),表達(dá)式:r instanceof Thread的值是___false___。

      表達(dá)式:r instanceof Thread的語(yǔ)義即“r是否為T(mén)hread的實(shí)例(instance)”。再看Thread的構(gòu)造方法(Thread有許多構(gòu)造方法,以下是最典型的構(gòu)造方法,其它構(gòu)造方法都是從下面的構(gòu)造方法中“減掉”一些參數(shù)形成的):

      Thread(ThreadGroup group, Runnable target, String name)

      可見(jiàn),Thread構(gòu)造方法中沒(méi)有類(lèi)型為T(mén)hread的參數(shù),故r不可能是Thread的實(shí)例

      第四篇:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告二線(xiàn)性表的順序存儲(chǔ)

      實(shí)驗(yàn)報(bào)告二 線(xiàn)性表的順序存儲(chǔ)

      班級(jí): 2010XXX 姓名: HoogLe 學(xué)號(hào): 2010XXXX 專(zhuān)業(yè): XXXX

      2858505197@qq.com

      一、實(shí)驗(yàn)?zāi)康模?/p>

      (1)掌握順序表的基本操作的實(shí)現(xiàn)方法。

      (2)應(yīng)用順序表的基本算法實(shí)現(xiàn)集合A=AUB算法。

      (3)應(yīng)用順序表的基本算法實(shí)現(xiàn)兩有序順序表的歸并算法。

      二、實(shí)驗(yàn)內(nèi)容:

      1、線(xiàn)性表順序存儲(chǔ)結(jié)構(gòu)的基本操作算法實(shí)現(xiàn)(要求采用類(lèi)模板實(shí)現(xiàn))

      [實(shí)現(xiàn)提示](同時(shí)可參見(jiàn)教材p5822-p60頁(yè)算法、ppt)函數(shù)、類(lèi)名稱(chēng)等可自定義,部分變量請(qǐng)加上學(xué)號(hào)后3位。庫(kù)函數(shù)載和常量定義:(代碼)#include using namespace std;const int MaxSize=100;

      (1)順序表存儲(chǔ)結(jié)構(gòu)的定義(類(lèi)的聲明):(代碼)

      template //定義模板類(lèi)SeqList class SeqList { public: SeqList();//無(wú)參構(gòu)造函數(shù)

      SeqList(datatype a[ ], int n);//有參構(gòu)造函數(shù) ~SeqList(){};//析構(gòu)函數(shù)為空 int Length();//求線(xiàn)性表的長(zhǎng)度

      datatype Get(int i);//按位查找,取線(xiàn)性表的第i個(gè)元素 int Locate(datatype item);//查找元素item void Insert(int i, datatype item);//在第i個(gè)位置插入元素item datatype Delete(int i);//刪除線(xiàn)性表的第i個(gè)元素 void display();//遍歷線(xiàn)性表,按序號(hào)依次輸出各元素 private: datatype data[MaxSize];//存放數(shù)據(jù)元素的數(shù)組 int length;//線(xiàn)性表的長(zhǎng)度 };

      (2)初始化順序表算法實(shí)現(xiàn)(不帶參數(shù)的構(gòu)造函數(shù))/* *輸 入:無(wú)

      *前置條件:順序表不存在 *功 能:構(gòu)建一個(gè)順序表 *輸 出:無(wú)

      *后置條件:表長(zhǎng)為0 */ 實(shí)現(xiàn)代碼:

      template SeqList:: SeqList(){ length=0;}

      (3)順序表的建立算法(帶參數(shù)的構(gòu)造函數(shù))

      /* *輸 入:順序表信息的數(shù)組形式a[],順序表長(zhǎng)度n *前置條件:順序表不存在

      *功 能:將數(shù)組a[]中元素建為長(zhǎng)度為n的順序表 *輸 出:無(wú)

      *后置條件:構(gòu)建一個(gè)順序表 */ 實(shí)現(xiàn)代碼:

      template SeqList:: SeqList(datatype a[], int n){ if(n>MaxSize){

      cout<<“數(shù)組元素個(gè)數(shù)不合法”<

      data[i]=a[i];length=n;}(4)在順序表的第i個(gè)位置前插入元素e算法 /* *輸 入:插入元素e,插入位置i *前置條件:順序表存在,i要合法

      *功 能:將元素e插入到順序表中位置i處 *輸 出:無(wú)

      *后置條件:順序表插入新元素,表長(zhǎng)加1 */ 實(shí)現(xiàn)代碼:

      template void SeqList::Insert(int i, datatype item){ int j;if(length>=MaxSize){

      cout<<“溢出”<length+1){

      cout<<“i不合法!”<=i;j--)

      data[j]=data[j-1];data[i-1]=item;length++;}(5)刪除線(xiàn)性表中第i個(gè)元素算法 /* *輸 入:要?jiǎng)h除元素位置i *前置條件:順序表存在,i要合法

      *功 能:刪除順序表中位置為i的元素 *輸 出:無(wú)

      *后置條件: 順序表冊(cè)除了一個(gè)元素,表長(zhǎng)減1 */ 實(shí)現(xiàn)代碼:

      template datatype SeqList::Delete(int i){ int item,j;if(length==0){

      cout<<“表為空,無(wú)法刪除元素!”<length){

      cout<<“i不合法!”<

      for(j=i;j

      data[j-1]=data[j];//注意數(shù)組下標(biāo)從0記

      length--;return item;}(6)遍歷線(xiàn)性表元素算法 /* *輸 入:無(wú)

      *前置條件:順序表存在 *功 能:順序表遍歷 *輸 出:輸出所有元素 *后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template void SeqList::display(){ if(length==0){

      cout<<“表為空,無(wú)法輸出!”<

      cout<

      (7)獲得線(xiàn)性表長(zhǎng)度算法 /* *輸 入:無(wú)

      *前置條件:順序表存在 *功 能:輸出順序表長(zhǎng)度 *輸 出:順序表長(zhǎng)度 *后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template int SeqList::Length(){ return Length;}

      (8)在順序線(xiàn)性表中查找e值,返回該元素的位序算法 /* *輸 入:查詢(xún)?cè)刂礶 *前置條件:順序表存在

      *功 能:按值查找值的元素并輸出位置 *輸 出:查詢(xún)?cè)氐奈恢?*后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template int SeqList::Locate(datatype item){ for(int i=0;i

      //下標(biāo)為i的元素等于item,返回其序號(hào)i+1

      return 0;//查找失敗 }

      (9)獲得順序線(xiàn)性表第i個(gè)元素的值 /* *輸 入:查詢(xún)?cè)匚恢胕 *前置條件:順序表存在,i要合法

      *功 能:按位查找位置為i的元素并輸出值 *輸 出:查詢(xún)?cè)氐闹?*后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template datatype SeqList::Get(int i){ if(i<0||i>length){

      cout<<“i不合法!”<

      (10)判表空算法 /* *輸 入:無(wú) *前置條件:無(wú)

      *功 能:判表是否為空

      *輸 出:為空返回1,不為空返回0 *后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template bool SeqList::Empty(){ if(length==0){

      return 1;} else {

      return 0;} }

      (11)求直接前驅(qū)結(jié)點(diǎn)算法 /* *輸 入:要查找的元素e,待存放前驅(qū)結(jié)點(diǎn)值e1

      *前置條件:無(wú)

      *功 能:查找該元素的所在位置,獲得其前驅(qū)所在位置。*輸 出:返回其前驅(qū)結(jié)點(diǎn)的位序。*后置條件:e1值為前驅(qū)結(jié)點(diǎn)的值 */ 實(shí)現(xiàn)代碼:

      template int SeqList::Pre(datatype item){ int k=Locate(item)-1;if(k>0)

      return k;else {

      cout<<“無(wú)前驅(qū)結(jié)點(diǎn)!”<

      return 0;} }(12)求直接后繼結(jié)點(diǎn)算法 /* *輸 入:要查找的元素e,待存放后繼結(jié)點(diǎn)值e1 *前置條件:無(wú)

      *功 能:查找該元素的所在位置,獲得其后繼所在位置。*輸 出:返回其后繼結(jié)點(diǎn)的位序。*后置條件:e1值為后繼結(jié)點(diǎn)的值 */ 實(shí)現(xiàn)代碼:

      template int SeqList::Suc(datatype item){ int k=Locate(item)+1;if(k>length){

      cout<<“無(wú)后繼結(jié)點(diǎn)!”<

      return k;} }

      上機(jī)實(shí)現(xiàn)以上基本操作,寫(xiě)出main()程序: void main(){ SeqList Seq;//創(chuàng)建

      if(Seq.Empty()){

      cout<<“線(xiàn)性表為空!”<

      } Seq.Insert(1,1);Seq.Insert(2,2);Seq.Insert(3,3);Seq.Insert(4,4);Seq.Insert(5,5);//插入元素操作

      cout<<“輸出插入的五個(gè)元素:”<

      cout<

      cout<<“2是第”<

      cout<<“第五個(gè)元素是:”<

      cout<<“線(xiàn)性表的長(zhǎng)度為:”<

      Seq.Delete(3);//刪除元素

      cout<<“刪除第三個(gè)元素后的線(xiàn)性表為:”<

      cout<

      cout<<“元素2前驅(qū)結(jié)點(diǎn)的數(shù)值為:”<

      cout<<“元素4后繼結(jié)點(diǎn)的位置為:”<

      cout<<“元素4后繼結(jié)點(diǎn)的數(shù)值為:”<

      要求對(duì)每個(gè)算法都加以測(cè)試,判斷是否正確;并測(cè)試不同類(lèi)型數(shù)據(jù)的操作。粘貼測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果:

      2、用以上基本操作算法,實(shí)現(xiàn)A=AUB算法。(利用函數(shù)模板實(shí)現(xiàn))/* *輸 入:集合A,集合B *前置條件:無(wú)

      *功 能:實(shí)現(xiàn)A=AUB *輸 出:無(wú)

      *后置條件:A中添加了B中的元素。*/

      實(shí)現(xiàn)代碼:

      template SeqList SeqList::Add(SeqList& item){ if(item.Empty())

      return *this;else {

      int k=item.Length();

      int num=this->Length();

      for(int i=1;i<=k;i++)

      {

      for(int j=0;j

      if(data[j]==item.Get(i))

      {

      break;

      }

      else if(num-1==j&&data[num-1]!=item.Get(i))

      {

      this->Insert(++num,item.Get(i));

      }

      }

      return *this;} } void main(){ SeqList A,B;cout<<“A∪B的結(jié)果是:”<

      B.Insert(1,2);B.Insert(2,6);B.Insert(3,1);B.Insert(4,8);B.Insert(5,9);//插入集合B中元素

      A.Add(B);A.display();cout<

      3、對(duì)以上順序表類(lèi)中的基本操作算法適當(dāng)加以補(bǔ)充,實(shí)現(xiàn)向一個(gè)有序的(非遞減)的順序表中插入數(shù)據(jù)元素e算法。/* *輸 入:插入元素e *前置條件:順序表已有序

      *功 能:將元素e插入到順序表中適當(dāng)?shù)奈恢?,使順序表依然有?*輸 出: 無(wú)

      *后置條件:有序順序表插入了新元素,且表長(zhǎng)加1。*/ 實(shí)現(xiàn)代碼:

      template void SeqList::orderInsert(datatype item){ int num=this->Length();for(int i=0;i

      if((data[i]item))

      {

      for(int k=num;k>i;k--)

      data[k]=data[k-1];

      data[i+1]=item;

      length++;

      break;

      }

      if(data[i]>item)

      {

      for(int k=num;k>i;k--)

      data[k]=data[k-1];

      data[i]=item;

      length++;

      break;

      } } } void main(){ SeqList A,B;A.Insert(1,3);A.Insert(2,5);A.Insert(3,6);A.Insert(4,8);A.Insert(5,10);//插入順序表

      cout<<“原順序表為:”<

      cout<

      cout<<“插入新元素后的順序表為:”<

      4、算法實(shí)現(xiàn):La,Lb為非遞減的有序線(xiàn)性表,將其歸并為L(zhǎng)c,該線(xiàn)性表仍有序(未考慮相同時(shí)刪除一重復(fù)值)(利用函數(shù)類(lèi)板實(shí)現(xiàn))MergeList: /* *輸 入:有序線(xiàn)性表La,有序線(xiàn)性表Lb *前置條件:順序表已有序

      *功 能:將兩線(xiàn)性表歸并,不去掉相同元素 *輸 出: 返回一個(gè)新的有序線(xiàn)性表Lc *后置條件:無(wú) */ 實(shí)現(xiàn)代碼:

      template SeqList SeqList::ElseAdd(SeqList Seq1,SeqList Seq2){ int num=Seq2.Length();for(int i=0;i<=num;i++){

      Seq1.orderInsert(Seq2.Get(i));} return Seq1;} void main(){ SeqList La,Lb,Lc;La.Insert(1,2);La.Insert(2,4);La.Insert(3,6);La.Insert(4,8);//插入La cout<<“La中元素為:”<

      cout<<“合并后的Lc為:”<

      cout<

      粘貼測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果:

      三、心得體會(huì):(含上機(jī)中所遇問(wèn)題的解決辦法,所使用到的編程技巧、創(chuàng)新點(diǎn)及編程的心得)

      第五篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—java通訊錄管理系統(tǒng)

      import java.io.*;import java.util.*;public class LittleProgram {

      static boolean isDelete = true;

      static boolean isFind = true;

      public static void main(String [] args)//主方法,程序從這里開(kāi)始運(yùn)行

      throws IOException,NumberNotFoundException

      {

      int choice=-1;

      do{

      LittleProgram lp = new LittleProgram();

      System.out.println();

      System.out.println(“t

      #”);

      System.out.println();

      System.out.println(“tt通訊錄管理系統(tǒng)”);

      System.out.println(“t

      請(qǐng)用號(hào)碼插入,查找,修改,刪除數(shù)據(jù)”);

      System.out.println();

      System.out.println(“t

      #n”);

      System.out.print(“1.增加號(hào)碼:n”+

      “2.查找號(hào)碼:n”+

      “3.刪除號(hào)碼:n”+ “4.清除所有號(hào)碼:n”+ “5.把號(hào)碼全部打印到屏幕n”+ “6.把通訊錄按號(hào)碼排序n”+

      “7.修改號(hào)碼n”+

      “8.統(tǒng)計(jì)通碼訊錄的總?cè)藬?shù)n”+

      “9.關(guān)于作者n”+

      “0.退出程序.n” +

      “輸入:”);

      BufferedReader in =

      //從終

      new BufferedReader(//端接

      new InputStreamReader(System.in));//收數(shù)

      String inputLine = in.readLine();

      //字選

      choice= Integer.valueOf(inputLine).intValue();//項(xiàng);

      switch(choice)

      {

      case 1: {//1.增加號(hào)碼

      String str = lp.inputData();

      lp.addData(str);

      System.out.println(“增加號(hào)碼成功.”);

      timeOut(1);

      }break;

      case 2: {//2.查找號(hào)碼

      long find = 0;

      System.out.print(“請(qǐng)輸入你要查找的號(hào)碼:”);

      BufferedReader inn =

      new BufferedReader(new InputStreamReader(System.in));

      String inputLi = inn.readLine();

      find = Integer.valueOf(inputLi).longValue();

      lp.findData(find);

      timeOut(2);

      }break;

      case 3: {//3.刪除號(hào)碼

      long deleteNumber = 0;

      System.out.print(“請(qǐng)輸入你想刪除號(hào)碼:”);

      BufferedReader bf =

      new BufferedReader(new InputStreamReader(System.in));

      String inputL = bf.readLine();

      deleteNumber = Integer.valueOf(inputL).longValue();

      lp.deleteData(deleteNumber);

      if(isDelete)

      System.out.println(“刪除號(hào)碼成功!”);

      timeOut(1);

      }break;

      case 4: {

      lp.clearData();//4.清除所有號(hào)碼

      timeOut(1);

      }break;

      case 5: {

      print();//5.把號(hào)碼全部打印到屏幕

      timeOut(2);

      }break;

      case 6: {

      lp.numSort();//6.把號(hào)碼按號(hào)碼排序

      System.out.println(“按照號(hào)碼從小到大排序成功!n”+

      “排序后:n”);

      print();

      timeOut(2);

      }break;

      case 7: {

      lp.rewrite();//7.修改號(hào)碼

      timeOut(2);

      }break;

      case 8: {

      int count = lp.count();

      System.out.println(“共有”+count+“個(gè)號(hào)碼記錄.”);

      timeOut(2);

      }break;

      case 9: {

      System.out.print(“tt李雪萍n”+

      “tt安徽理工大學(xué)理學(xué)院n”+

      “ttQQ:1154646392n”);

      timeOut(4);

      }break;

      }}while(choice!= 0);

      System.out.println(“Bye!^-^”);

      System.exit(0);

      }

      public String inputData()//從終端接收數(shù)據(jù)的方法,返回字符串

      throws IOException,NumberFormatException

      {

      System.out.print(“請(qǐng)依次輸入 :號(hào)碼 姓名 地址 生日n” +

      “每項(xiàng)數(shù)據(jù)請(qǐng)用空格隔開(kāi):”);

      String all = “";

      try{

      BufferedReader in =

      //從終

      new BufferedReader(//端接

      new InputStreamReader(System.in));

      //收數(shù)

      String inputLine = in.readLine();

      //據(jù)

      StringTokenizer str =

      new StringTokenizer(inputLine,” “);//接收的數(shù)據(jù)用空格隔開(kāi),這個(gè)類(lèi)用來(lái)提取每個(gè)字符串

      long num = Integer.valueOf(str.nextToken()).longValue();//號(hào)碼

      String name =(String)str.nextToken();

      //姓名

      String add =(String)str.nextToken();

      // 地址

      String birth =(String)str.nextToken();//出生年月

      all = String.valueOf(num)+” , “+

      name +” , “+

      add +” , “+

      String.valueOf(birth);//把所有的數(shù)據(jù)用” , “隔開(kāi)然后在連起來(lái)放進(jìn)字符串a(chǎn)ll

      }catch(IOException e){}

      catch(NumberFormatException e){}

      return all;//返回字符串a(chǎn)ll

      }

      public void addData(String str)//增加號(hào)碼的方法

      throws IOException

      {

      String s1 =”“,s2=”“ ,s3= ”“;

      File file = new File(”c:data.txt“);

      if(file.exists())//如果文件data.txt存在 {

      try{

      BufferedReader in =

      new BufferedReader(new FileReader(file));

      while((s1=in.readLine())!=null)

      s2+=s1+”n“;//把文件中的每行數(shù)據(jù)全部放進(jìn)一個(gè)字符串s2

      s2+=str+”n“;

      //再把s2于形參str相連放進(jìn)s2

      BufferedReader in2 =

      //把字符

      new BufferedReader(//串s2也

      new StringReader(s2));

      //就是原

      PrintWriter out =

      //文件+

      new PrintWriter(//形參str(新輸入的一行數(shù)據(jù))

      new BufferedWriter(//重新寫(xiě)進(jìn)data.txt

      new FileWriter(file)));

      //覆蓋原來(lái)的數(shù)據(jù)

      while((s3=in2.readLine())!= null)

      {

      out.println(s3);

      }

      out.close();

      //System.out.println(”write data true.“);

      }catch(IOException e){}

      }else{

      System.err.println(”File “data” Missing!“);

      }

      }

      public void clearData()//清除data.txt的所有數(shù)據(jù)的方法

      throws IOException

      {

      File file = new File(”c:data.txt“);

      if(file.exists())//如果文件在{

      try{

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(file)));

      out.print(”“);//在文件data.txt里寫(xiě)進(jìn)一個(gè)空字符,所以清除了原來(lái)的內(nèi)容

      out.close();//關(guān)閉文件

      System.out.println(”clear data true!“);

      }catch(IOException e){}

      }else{

      System.err.println(”File “data” Missing!“);

      }

      }

      public void deleteData(long deleteNumber)//刪除某條號(hào)碼數(shù)據(jù)

      throws IOException,FileNotFoundException

      {

      isDelete = true;

      try{

      DataMap mp = new DataMap();//生成一個(gè)自己編寫(xiě)的容器

      long j=0;

      String s1=”“,s2=”“,s3=”“;

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s1=in.readLine())!=null)

      {

      j=numberTokenizer(s1);

      mp.put(j,s1);

      }

      try{

      if(mp.containsKey(String.valueOf(deleteNumber).toString()))

      {

      mp.remove(deleteNumber);

      }else

      throw new NumberNotFoundException();

      Collection c = mp.values();

      Iterator iter = c.iterator();

      while(iter.hasNext())

      {

      s1 =(String)iter.next();

      s3 +=s1+”n“;

      }

      BufferedReader in2 =

      new BufferedReader(new StringReader(s3));

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

      //System.out.println(”delete No“+deleteNumber);

      while((s1 = in2.readLine())!=null)

      {

      out.println(s1);

      } out.close();}catch(NumberNotFoundException e){

      isDelete = false;

      System.out.println(deleteNumber+” no found :(“);

      }

      }catch(IOException e){}

      }

      public long numberTokenizer(String s)

      throws IOException

      {

      StringTokenizer st =

      new StringTokenizer(s,” “);

      return Integer.valueOf((st.nextToken())).longValue();

      }

      public void findData(long find)//查找數(shù)據(jù)

      throws IOException,NumberNotFoundException

      {

      isFind = true;

      String s = ”“,findString =”“;long i;DataMap dm = new DataMap();BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dm.put(i,s);

      }

      //in.close();

      try{

      if(dm.containsKey(String.valueOf(find).toString()))

      {

      findString = dm.get(find);

      System.out.println(”學(xué)號(hào)“+find+”學(xué)生的資料是:“);

      System.out.println(findString);

      }else

      throw new NumberNotFoundException();

      }catch(NumberNotFoundException e){

      System.out.println(find+” no found :(“);

      isFind = false;

      }

      }

      public static void print()//讀取文本文件把數(shù)據(jù)打印到終端的方法

      throws IOException

      {

      try{

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      String read = ”“;

      while((read = in.readLine())!=null)

      System.out.println(read);

      }catch(IOException e){}

      }

      public static void timeOut(double sec)//停頓短暫時(shí)間的一個(gè)方法完全可以不要這個(gè)功能

      {

      double seconds = sec;

      long t = System.currentTimeMillis()+(int)(seconds*1000);

      while((System.currentTimeMillis())

      ;

      }

      public void numSort()//按學(xué)號(hào)排序

      throws IOException

      {

      long i = 0;

      String s = ”“;

      try{

      DataArrayList dal = new DataArrayList();

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dal.add(i);

      }

      Collections.sort(dal);

      DataMap dm = new DataMap();

      BufferedReader in2 =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in2.readLine())!=null)

      {

      i=numberTokenizer(s);

      dm.put(i,s);

      }

      PrintWriter out =

      new PrintWriter(new BufferedWriter(new FileWriter(”c:data.txt“)));

      Iterator it = dal.iterator();

      long temp = 0;

      String tempStr = ”“;

      while(it.hasNext())

      {

      temp = Integer.valueOf((String)it.next()).longValue();

      tempStr = dm.get(temp);

      out.println(tempStr);

      }

      out.close();

      }catch(IOException e){}

      }

      public void rewrite()

      throws IOException,NumberNotFoundException

      {

      try{

      System.out.print(”請(qǐng)輸入你要修改的學(xué)生號(hào)碼:“);

      BufferedReader in =

      new BufferedReader(new InputStreamReader(System.in));

      String inputLine = in.readLine();

      long num = Integer.valueOf(inputLine).longValue();

      findData(num);

      if(isFind)

      { deleteData(num);System.out.print(”請(qǐng)重新輸入該號(hào)碼:“);String str = inputData();

      addData(str);

      System.out.println(”rewrite true!“);

      }

      }catch(IOException e){}

      catch(NumberNotFoundException e){}

      }

      public int count()

      throws IOException

      {

      DataArrayList dal = new DataArrayList();

      try{

      String s = ”“;

      long i =0;

      BufferedReader in =

      new BufferedReader(new FileReader(”c:data.txt“));

      while((s=in.readLine())!=null)

      {

      i=numberTokenizer(s);

      dal.add(i);

      }

      }catch(IOException e){}

      return dal.size();

      } } /* *

      * @author RangWei * TODO 這是個(gè)寫(xiě)的一個(gè)容器,繼承公共類(lèi)HashMap * 大概的功能就相當(dāng)一個(gè)數(shù)組

      *

      */ class DataMap extends HashMap//一個(gè)存儲(chǔ)數(shù)據(jù)的Map

      {

      public void put(long i,String str)//把學(xué)號(hào)和數(shù)據(jù)放進(jìn)這個(gè)Map

      {

      //以后一個(gè)學(xué)號(hào)(key)對(duì)應(yīng)的是一個(gè)人的數(shù)據(jù)(value)

      put(String.valueOf(i).toString(),str);

      }

      public void remove(long i)//接收學(xué)號(hào),然后刪除學(xué)號(hào)(key)和它對(duì)應(yīng)的數(shù)據(jù)(value)

      {

      remove(String.valueOf(i).toString().toString());

      }

      public String get(long i)//接收一個(gè)學(xué)號(hào),然后返回這個(gè)key對(duì)應(yīng)的value

      {

      String s = String.valueOf(i).toString();

      if(!containsKey(s))

      {

      System.err.println(”Not found Key: "+s);

      }

      return(String)get(s);

      } } /*

      *

      * @author RangWei * * TODO 這個(gè)類(lèi)繼承ArrayList * 用來(lái)按數(shù)字排序,在用號(hào)碼排序時(shí)要用到它

      *

      */ class DataArrayList extends ArrayList {

      public void add(long num)

      {

      String numToString = String.valueOf(num).toString();

      add(numToString);

      } } /* *

      * @author RangWei * * TODO 增加的一個(gè)Exception,主要是在文件里沒(méi)有要找

      * 的號(hào)碼就拋出

      *

      */ class NumberNotFoundException extends Exception {

      public NumberNotFoundException()

      {} }

      下載JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析word格式文檔
      下載JAVA數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)剖析.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)據(jù)結(jié)構(gòu)(Java)復(fù)習(xí)題及答案 1緒論

        一、單項(xiàng)選擇題 ( B )1. 計(jì)算機(jī)算法必須具備輸入、輸出和 等5個(gè)特性。 A) 可行性、可移植性和可擴(kuò)充性 B) 可行性、確定性和有窮性 C) 確定性、有窮性和穩(wěn)定性 D) 易讀性、穩(wěn)......

        2012廣西壯族自治區(qū)JAVA版數(shù)據(jù)結(jié)構(gòu)試題及答案

        1、下列序列中,執(zhí)行第一趟快速排序后得到的序列是( A )。 A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b] C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h] 2、設(shè)給定問(wèn)題的規(guī)模為變量......

        用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié)

        用java調(diào)用oracle存儲(chǔ)過(guò)程總結(jié) 分類(lèi): PL/SQL系列 2009-09-24 15:08 253人閱讀 評(píng)論(0) 收藏 舉報(bào) 聲明: 以下的例子不一定正確,只是為了演示大概的流程。 一:無(wú)返回值的存儲(chǔ)......

        數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告三線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)(5篇范文)

        實(shí)驗(yàn)報(bào)告三 線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ) 班級(jí): 2010XXX 姓名: HoogLe 學(xué)號(hào): 2010XXXX 專(zhuān)業(yè): XXXX 2858505197@qq.com 一、 實(shí)驗(yàn)?zāi)康模?(1) 掌握單鏈表的基本操作的實(shí)現(xiàn)方法。 (2) 掌握循環(huán)單鏈表......

        企業(yè)財(cái)務(wù)數(shù)據(jù)存儲(chǔ)及備份解決方案剖析

        企業(yè)財(cái)務(wù)數(shù)據(jù)存儲(chǔ)及備份解決方案 一、需求分析 財(cái)務(wù)部門(mén)是企業(yè)開(kāi)展信息化較早的部門(mén),很多企業(yè)在實(shí)施會(huì)計(jì)電算化取得成功后,逐步將企業(yè)的信息化推向供應(yīng)鏈、人力資源等系統(tǒng)。......

        數(shù)據(jù)結(jié)構(gòu)參考材料[范文大全]

        數(shù)據(jù)結(jié)構(gòu)參考題目 一、選擇 1.如果在數(shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)元素只可能有一個(gè)直接前驅(qū),但可以有多個(gè)直接后繼,則該結(jié)構(gòu)是( ) A.棧 B.隊(duì)列 C. 樹(shù) D.圖 2.下面程序段的時(shí)間復(fù)雜度為( ) f......

        BMP圖像存儲(chǔ)格式

        維基百科的BMP定義 BMP取自位圖BitMaP的縮寫(xiě),也稱(chēng)為DIB(與設(shè)備無(wú)關(guān)的位圖),是微軟視窗圖形子系統(tǒng)(Graphics Device Interface)內(nèi)部使用的一種位圖圖形格式,它是微軟視窗平臺(tái)上的一......

        存儲(chǔ)方案選擇

        第三章 存儲(chǔ)方案選擇 3.1 存儲(chǔ)架構(gòu)選擇 目前主流的存儲(chǔ)架構(gòu)包括DAS、 NAS、 SAN,下面針對(duì)3種主流應(yīng)用系統(tǒng)做架構(gòu)分析。 直連方式存儲(chǔ)(Direct Attached StorageSAN)。存儲(chǔ)設(shè)備組......