課程:《程序設計與數據結構》
班級: 1723
姓名: 王文彬
學號:20172329
實驗教師:王志強
實驗日期:2018年9月30日
必修/選修: 必修html
for (int i =0;i<c.length;i++) { a.enqueue(c[i]); }
而後用size()方法把隊列的元素個數給輸出。node
過程:由於須要用鏈表實現插入,刪除,輸出等方法,因此在實現這個實驗期間,須要解決頭插法的實現,由於當時老師講的頭插法我可能用了錯誤的方式進行了實現,雖然能夠進行頭插法的實現,可是並無實際的插入到隊列中,因此這是一個待解決的問題,其次,在進行這個實驗中,我參考了我一樣參考了以前我本身寫過的一個類,由於以前本身寫的方法都將其定義爲了靜態,因此每個方法都是相互獨立的,因此爲了將nwangwenbin成功發揮出它的做用,我將這些靜態方法都作出了適當改變,以即可以成功計數,從而使得size方法寫的比較完整。git
public void Firstinsert(Number Head, Number node) {//頭插 node.next = Head; Head = node; nWangwenbin++; System.out.print(Head.number+" "); } public void insert(Number Head, Number node1, Number node2, Number node) {//中間插 Number point = Head; while ((point.number != node1.number) && point != null) { point = point.next; } if (point.number == node1.number) { node.next = node2; point.next = node; } nWangwenbin++; } public void add(Number Head, Number node) {//尾插 Number temp = Head; while (temp.next != null) { temp = temp.next; } temp.next = node; nWangwenbin++; }
(2)刪除方法的實現:算法
public void delet(Number Head, Number node) { Number p = Head, Curr = Head; while (Curr != null) { if (Curr.number != node.number) { p = Curr; Curr = Curr.next; } else { break; } } p.next = Curr.next; nWangwenbin--; }
(3)輸出方法實現:數組
public void print(Number Head) { Number node = Head; while (node != null) { System.out.print(node.number+","); node = node.next; } }
(4)計數方法實現:服務器
public int size(){ return nWangwenbin+1; }
(2)思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。而後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至所有排序完成。
第一趟比較完成後,最後一個數必定是數組中最大的一個數,因此第二趟比較的時候最後一個數不參與比較;
第二趟比較完成後,倒數第二個數也必定是數組中第二大的數,因此第三趟比較的時候最後兩個數不參與比較;
依次類推,每一趟比較次數-1;數據結構
形象展現
函數
public Number bubbleSort(Number head){ if(head == null || head.next == null) return head; Number cur = null, tail = null; cur = head; while(cur.next != tail){ while(cur.next != tail){ if(cur.number > cur.next.number){ int tmp = cur.number; cur.number = cur.next.number; cur.next.number = tmp; } cur = cur.next; } Number node = head; while (node != null) { System.out.print(node.number+" "); node = node.next; } System.out.println("該一輪的元素數量爲:"+(nWangwenbin-1)); tail = cur; cur = head; } return null; }
過程:第四個實現,旨在讓咱們用數組實現第1、二個實驗所須要的功能,其中咱們須要實現的是不只僅只有插入,刪除的方法,還要就這個題目結合本身的代碼進行其餘方法的處理與編寫,以使得本身的代碼能夠完成其應當有的功能。.net
public void add(int array[],int a){ if (array[0]==0){ array[0]=a; } else { int i =0; while (array[i]!=0){ i++; } array[i]=a; } nwangwenbin++; } public int size(){ return nwangwenbin; } public void delete(int array[] ) { System.out.println("請輸入想要刪除的數字的位置:"); Scanner scan = new Scanner(System.in); int mes = scan.nextInt(); int pos=mes; // int pos1=mes; for (int i = 0; i < size(); i++) { temp[i] = array[mes]; mes++; } for (int i =0;i<size();i++){ array[pos-1]=temp[i]; pos++; } nwangwenbin--; } public boolean iEmpty(){ if (array[0]==0){ return true; } else { return false; } } public String print(int array[]){ String result=""; for (int i =0;i<size();i++){ result+=array[i]+" "; } return result; }
過程:第五個實驗旨在用數組實現選擇排序,由於以前就已經瞭解過選擇排序,在這裏不作詳細的講解。設計
public void selectsorting(int[] array){ for(int i = 0; i < size() - 1; i++) { int k = i; for(int j = k + 1; j < size(); j++){ if(array[j] < array[k]){ k = j; } } if(i != k){ int temp = array[i]; array[i] = array[k]; array[k] = temp; } System.out.print("第" + (i + 1) + "輪排序後:"); for (int ii = 0; ii < size(); ii++) { System.out.print(array[ii] + " "); } System.out.println("當前數字串的總數爲:"+nwangwenbin); System.out.print("\n"); }
問題1解決方法:
(1)由於從文件讀出的屬於字節流,讀出來的是字節型的,因此咱們須要用Stringvalueof
語句將其進行轉義爲字符串格式,再根據其咱們所須要的格式進行改寫。
while (node != null) { System.out.print(node.number+" "); node = node.next; } System.out.println("該一輪的元素數量爲:"+(nWangwenbin-1));
經過這樣一段輸出,就能夠將其在每一輪進行輸出。
split
語句分開的數組進行真正意義上的進入。以下代碼:public void add(int array[],int a){ if (array[0]==0){ array[0]=a; } else { int i =0; while (array[i]!=0){ i++; } array[i]=a; } nwangwenbin++; }
經過這樣一段,就能夠再用下面的這段掃進實現nwangwenbin的累加:
for (int i =0;i<c.length;i++){ a.add(b,Integer.parseInt(c[i])); }
經過這樣的一段就能夠解決咱們的問題。
作這個實驗的時候,由於本身在以前就已經有編寫相關代碼的過程,因此在編寫這五個代碼的過程當中,本身的自主性獲得了提高,再也不想上學期同樣,一旦不會就去看別人的代碼,我以爲本身與上學期相比,有所進步。