实验一
链表练习,要求实现下列功能:
经过键盘输入一些整数,创建一个链表;
这些数是你学号中依次取出的两位数。 再加上今天的时间。
例如你的学号是 20172301
今天时间是 2018/10/1, 16:23:49秒数字就是20, 17,23,1, 20, 18,10,1,16,23,49
打印全部链表元素, 并输出元素的总数。 在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是
int nZhangSan = 0; //初始化为 0.
作完这一步,把你的程序签入源代码控制(git push)。node
实验二
实现节点插入、删除、输出操做;
继续你上一个程序,扩展它的功能,每作完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;
从磁盘读取一个文件, 这个文件有两个数字。
从文件中读入数字1, 插入到链表第 5 位,并打印全部数字,和元素的总数。 保留这个链表,继续下面的操做。
从文件中读入数字2, 插入到链表第 0 位,并打印全部数字,和元素的总数。 保留这个链表,并继续下面的操做。
从链表中删除刚才的数字1. 并打印全部数字和元素的总数。
签入全部代码。git
实验三
使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;
若是你学号是单数, 选择冒泡排序,不然选择选择排序。
在排序的每个轮次中,打印元素的总数,和目前链表的全部元素。 在实验二获得的程序中继续扩展, 用同一个程序文件,写不一样的函数来实现这个功能。 仍然用 nZhangSan (你的名字)来表示元素的总数。数组
实验四
使用数组实现实验1、二的相关内容服务器
实验五
实验数组实现实验三的内容数据结构
用scanner方法将数组读取后,使用Stringtokenizer方法将其分开,以后存入链表,打印函数
public void TailInsert(LinkedList head, LinkedList node){ LinkedList temp; temp =head; while (temp.next != null){ temp = temp.next; } temp.next = node; nkhy++; }
front=head; node.next=front; head=node; System.out.println("The element is :"+ head.element); nkhy++;
public void Insertnode(int num,LinkedList head,LinkedList node2){ LinkedList temp = head; while (num != temp.element){ temp = temp.next; } node2.next = temp.next; temp.next = node2; nkhy++; }
public void DeleteNode(LinkedList Head,LinkedList node){ LinkedList PreNode = Head, CurrentNode = Head; while (CurrentNode !=null){ if(CurrentNode.element != node.element){ PreNode = CurrentNode; CurrentNode = CurrentNode.next; } else break; } PreNode.next = CurrentNode.next; nkhy--; }
public void selectSort(LinkedList head){ LinkedList temp = head; int sort[] = new int[head.size()]; for(int index = 0;index<head.size();index++){ sort[index] = temp.element; temp = temp.next; } selectionSort(sort); } public static void selectionSort(int[] a) { int n = a.length; for (int i = 0; i < n; i++) { int k = i; // 找出最小值的小标 for (int j = i + 1; j < n; j++) { if (a[j] < a[k]) { k = j; } } // 将最小值放到排序序列末尾 if (k > i) { int tmp = a[i]; a[i] = a[k]; a[k] = tmp; } String res = ""; for (int index=0;index<a.length;index++){ res += a[index] + " "; } System.out.println("the current linkedlist is :" +res); System.out.println("the number of the elements is :" + a.length); System.out.println(); } }
public void HeadInsert(int element){ array2[0] = element; for(int i =0;i<nKHY;i++){ array2[i+1] = array[i]; } nKHY++; array = array2; array2 = new int[DEFAULT_CAPACITY*2]; } public void delete(int id){ for(int index=0; index<id;index++){ array2[index]=array[index]; } for(int index=id ; index<nKHY;index++){ array2[index] = array[index+1]; } array = array2; array2 = new int[DEFAULT_CAPACITY*2]; nKHY--; }
for(int index=0 ; index<nKHY-id+2;index++){ array2[id+1] = array[id]; id++; }
改正后:设计
for(int index = id ; id < nKHY ;id++){ array2[id+1] = array[id]; }