(学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
来源:互联网 发布:yellow submarine 知乎 编辑:程序博客网 时间:2024/06/05 21:08
/*写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示*/public class LineListNodeHead {public static void main(String[] args) {System.out.println("1.查看链表");System.out.println("2.创建链表(尾插法)");System.out.println("3.链表长度");System.out.println("4.中间结点值");System.out.println("5.请空链表");System.out.println("0.退出");System.out.println("------------------");LineList L = new LineList();while(true){System.out.println("请选择你的操作:");Scanner ss = new Scanner(System.in);int n = ss.nextInt();if(n == 0){break;}else if(n == 1){//遍历链表L.ListNode();}else if(n == 2){//创建链表System.out.println("请输入要创建的链表长度");int i = ss.nextInt();L.addNodeR(i);L.ListNode();}else if(n == 3){//显示链表长度System.out.println("链表的长度" + L.size);}else if(n == 4){//取中间结点值int j = L.SearchMid();System.out.println("中间结点值" + j);}else if(n == 5){//清空链表L.ListClear();L.ListNode();}else{System.out.println("输入有误!");}}}public interface IList{public void addNodeH(int data);public void addNodeF(int data);public void ListNode();public int ListInsert(int i, int data);public int ListDelete(int i);public void ListClear();//实现随机存储元素public void addNodeR(int n);//查找中间结点public int SearchMid();}//结点public static class Node{public int data;public Node next;public Node(){}public Node(int data){this.data = data;this.next = null;}}public static class LineList implements IList{//头结点private Node head;//链表长度private int size;public LineList(){head = new Node();}//实现随机存储元素public void addNodeR(int n){for (int i=0;i<n;i++){int j = (int) (Math.random()*100);addNodeF(j);}}@Override//查找中间结点public int SearchMid() {Node search = head;Node mid = head;while(search.next != null){if(search.next.next != null){search = search.next.next;mid = mid.next;}else{search = search.next;}}return mid.data;}@Override//带头结点的单链表头插法public void addNodeH(int data) {Node node = new Node(data);if(head.next == null){head.next = node;size++;}else{node.next = head.next;head.next = node;size++;}}@Override//带头结点的单链表尾插法public void addNodeF(int data) {Node node = new Node(data);if(head.next == null){head.next = node;size++;}else{Node p = head.next;while(p.next != null){p = p.next;}node.next = p.next;p.next = node;size++;}}@Override//带头结点的单链表遍历public void ListNode() {Node p = head.next;if(p == null){System.out.println("空链表");System.out.println("单链表的长度" + size);}else{while(p.next != null){System.out.print(p.data + "->");p = p.next;}System.out.println(p.data);System.out.println("单链表的长度" + size);}}@Override//带头结点的单链表任意插入public int ListInsert(int i, int data) {Node temp = head;int j = 1;if(i<0){System.out.println("i值输入有误");return 0;}while(temp.next != null && j<i){temp = temp.next;j++;}Node node = new Node(data);node.next = temp.next;temp.next = node;size++;return 1;}@Override//单链表的删除public int ListDelete(int i) {Node temp = head;int j = 1;if(i<0){System.out.println("i值输入有误");return 0;}while(temp.next!=null && j<i){temp = temp.next;j++;}int n = temp.next.data;temp.next = temp.next.next;size--;return n;}@Override//列表的清空public void ListClear() {Node temp = head.next;while(head.next!=null){head.next = temp.next;temp = null;temp = head.next;size--;}}}}
阅读全文
0 0
- (学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
- 建立链表快速查找中间结点的值并显示
- 快速查找长度未知的单链表的中间结点
- 查找单向链表的中间元素
- 生成一个随机的120个元素的数据
- 生成有n个元素的随机数组 并设置随机元素的范围
- 写一个彩票程序 30选7 随机(1~30中间)生成7个随机数,注意不能重复然后输入7个数,对比7个数是否与随机数有相同的,如果有显示“中了几个号” 如果中了7个号,显示一等奖 如果中了6个号,显示二
- 每天一道算法题7 查找链表中倒数第k个结点 ; 输入一个单向链表。如果该链表的结点数为奇数,输出中间的结点;如果链表结点数为偶数,输出中间两个结点前面的一个
- 链表的中间结点
- 已知一个数组 20 个元素(随机 1 到 100 之间包含 1 和 100),求大于平均数的元素个数,并动态生成一个新数组保存
- 【Java】实现一个算法,删除单链表中间的某个结点,假定你只能访问该结点
- 编写算法实现建立一个带头结点的含n个元素的双向循环链表H,并在链表H中的第i个位置插入一个元素e
- 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,基数下标的元素不变
- 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数
- 用java写一个简单的随机生成井字棋棋子的程序
- 快速排序 以第一个,中间,最后元素的平均值为中轴 并测试1000000个整形元素的速度
- 输出一个单向链表中间的结点
- 输出一个单向链表中间的结点
- 书目:《黑客简史》
- Linux 美化
- [树链剖分]bzoj 4034—— [HAOI2015]树上操作
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(四)
- MySql修改 表名
- (学习java)写一个完整的程序,实现随机生成20个元素的链表,快速查找中间结点的值并显示
- C语言 二级指针详解及示例代码
- 根据两个经纬度坐标计算两个坐标间的距离
- Lintcode148 Sort Colors solution 题解
- 08-面向对象(继承-Java中的单继承和多重继承). 11-面向对象(继承-子父类中成员变量的内存图解) 11-面向对象(继承-子父类中成员变量的内存图解2
- 可以用作javascript异步模式的编程的方法
- 数据库系统概论学习笔记(一)---数据模型
- 银行家算法
- 左右为难