課程:《程序設計與數據結構》
班級: 1723
姓名: 陸大嶽
學號:20172318
實驗教師:王志強
實驗日期:2018年9月30日
必修/選修: 必修node
鏈表練習,要求實現下列功能:
(1)經過鍵盤輸入一些整數,創建一個鏈表(1分);
這些數是你學號中依次取出的兩位數。 再加上今天的時間。
例如你的學號是 20172301
今天時間是 2018/10/1, 16:23:49秒
數字就是
20, 17,23,1, 20, 18,10,1,16,23,49
打印全部鏈表元素, 並輸出元素的總數。
在你的程序中,請用一個特殊變量名來紀錄元素的總數,變量名就是你的名字。 例如你叫 張三, 那麼這個變量名就是
int nZhangSan = 0; //初始化爲 0.
(2)實現節點插入、刪除、輸出操做
繼續你上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器;
從磁盤讀取一個文件, 這個文件有兩個數字。
從文件中讀入數字1, 插入到鏈表第 5 位,並打印全部數字,和元素的總數。 保留這個鏈表,繼續下面的操做。
從文件中讀入數字2, 插入到鏈表第 0 位,並打印全部數字,和元素的總數。 保留這個鏈表,並繼續下面的操做。
從鏈表中刪除剛纔的數字1. 並打印全部數字和元素的總數。
(3)使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序(2分);
若是你學號是單數, 選擇冒泡排序, 不然選擇選擇排序。
在排序的每個輪次中, 打印元素的總數,和目前鏈表的全部元素。數組
數組練習,要求實現下列功能:
(1)經過鍵盤輸入一些整數,創建一個鏈表(1分);
這些數是你學號中依次取出的兩位數。 再加上今天的時間。
例如你的學號是 20172301
今天時間是 2018/10/1, 16:23:49秒
數字就是
20, 17,23,1, 20, 18,10,1,16,23,49
打印全部數組元素, 並輸出元素的總數。
在你的程序中,請用一個特殊變量名來紀錄元素的總數,變量名就是你的名字。 例如你叫 張三, 那麼這個變量名就是
int nZhangSan = 0; //初始化爲 0.
(2)實現節點插入、刪除、輸出操做(2分,3個知識點根據實際狀況酌情扣分);
繼續你上一個程序, 擴展它的功能,每作完一個新功能,或者寫了超過10行新代碼,就簽入代碼,提交到源代碼服務器;
從磁盤讀取一個文件, 這個文件有兩個數字。
從文件中讀入數字1, 插入到數組第 5 位,並打印全部數字,和元素的總數。 保留這個數組,繼續下面的操做。
從文件中讀入數字2, 插入到數組第 0 位,並打印全部數字,和元素的總數。 保留這個數組,並繼續下面的操做。
從數組中刪除剛纔的數字1. 並打印全部數字和元素的總數。
(3)使用冒泡排序法或者選擇排序法根據數值大小對數組進行排序(2分);
若是你學號是單數, 選擇選擇排序, 不然選擇冒泡排序。
在排序的每個輪次中, 打印元素的總數,和目前數組的全部元素。服務器
exp1 exp1 = new exp1(); Scanner scanner = new Scanner(System.in); System.out.println("輸入學號、日期、時間"); String string = scanner.nextLine(); StringTokenizer stringTokenizer = new StringTokenizer(string); for (int i = 0; i < string.length(); i++) { while (stringTokenizer.hasMoreTokens()) { String f = stringTokenizer.nextToken(); int num = Integer.parseInt(f); exp1.add(num); } } System.out.println("打印全部元素:" + exp1.toString() + "元素總數:" + exp1.Size());
File file = new File("D:\\shuzi.txt"); FileReader fileReader = null; try { fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); String str = ""; str = bufferedReader.readLine(); String[] strings = str.split(" "); int num1=Integer.parseInt(strings[0]); int num2=Integer.parseInt(strings[1]); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
public void insert( int data, int index) { NumberNode node = new NumberNode(data); NumberNode current = list; NumberNode pre = list; while (t != index) { pre = current; current = current.next; t++; } node.next = current; pre.next = node; t = 0; nLudayue++; }
public void delete(int num){ NumberNode node = new NumberNode(num); NumberNode current, temp; if(list.Num == num) { current = list.next; list = current; } else{ current = list; while(current.next.Num != num) current = current.next; temp = current.next.next; current.next = temp; } nLudayue --; }
public String toString(){ String result = ""; NumberNode current = list; while (current != null){ result += current.Num + " "; current = current.next; } return result; }
public void Selection(){ NumberNode current; current = list; int[] A = new int[nLudayue]; for(int i = 0; i < nLudayue; i++) { A[i] = current.Num; current = current.next; } int[] B = selectionSort(A); list = null; int top2 = nLudayue; for(int i =0;i< top2; i++){ int num = B[i]; add(num); } }
public int[] selectionSort(int[] list) { int min; int temp; for (int index = 0; index < list.length - 1; index++) { min = index; for (int scan = index + 1; scan < list.length; scan++) if (list[scan] - (list[min]) < 0) min = scan; temp = list[min]; list[min] = list[index]; list[index] = temp; } return list; }
public void insert(int num ,int index){ int[] number = Number; if(index != 0){ for(int i = nLudayue ;i>= index ;i--) { number[i]=number[i-1]; } number[index-1]= num; } else { for (int i = nLudayue;i > index;i--) number[i] = number[i-1]; number[0] = num; } nLudayue++; }
public void delete(int num){ int[] number = Number; int index = 0; while (number[index]!=num) { index++; } for (int i = index +1; i< nLudayue; i++) { number[i-1] = number[i]; } nLudayue--; }
public String toString() { String result = ""; for(int i = 0;i<nLudayue;i++) result += Number[i] + " "; return result; }
public void Sort() { int[] number = Number; for (int i = 0; i < nLudayue; i++) { for (int j = 0; j < nLudayue - i - 1; j++) { if (number[j] > number[j + 1]) { int temp = number[j+1]; number[j+1] = number[j]; number[j] = temp; } } } }
問題1:
出現了輸入8個數字卻將前面四個一塊兒讀取了的問題數據結構
問題1解決方案:後來發現緣由是我先寫了20172318,再將他們用空格分開致使的.net
此次實驗不只須要用到鏈表和數組,還得用點時間複習一下文件輸入和讀取方面的知識,考驗咱們掌握多方面知識的能力設計