用java建立的单链表

import java.util.*;

//学生类

class Stu

{

} private int math;//学生的学号 private String name;//学生的名字 public Stu(int math, String name) { } //获得学生的名字 public String getName() { return name; } //修改学生的分数 public void setMath(int math) { this.math = math; } //重写toString方法 public String toString() { } return name + ": " + math; this.math = math; this.name = name;

//链表节点类

class Point

{

Stu st = null; //链表数据域 Point next = null; //链表指针域 public Point(Stu st) { } this(st, null); //调用另一个构造方法 public Point(Stu st, Point next) {

}

} this.next = next;

//建立链表类,并实现其查找,添加,修改,删除,打印的功能 class MyList

{

private Point head = null; //表头 private Point tail = null; //表尾 Scanner read = new Scanner(System.in); //构造方法,默认表头和表尾都为空 public MyList() { } this.head = null; this.tail = null; //判断链表是否为空 public boolean isEmpty() { } return head == null; //建立表头 public void addHead(Stu st) { } //建立表尾 public void addTail(Stu st) { //判断表头是否为空,为空则先建立表头 if(isEmpty()) //调用判断判断链表是否为空的方法 { this.addHead(st);//调用建立表头的方法 head = new Point(st, head); //判断表尾是否为空,这里的主要作用是让表尾指向表头 if(null == tail) { } tail = head;

} else { Point temp = new Point(st); tail.next = temp; } tail = tail.next; //按学生名字,实现查找功能 public void find(String name) { } System.out.println("/n/n/n查询结果为:"); if(isEmpty()) { System.out.println("链表为空"); } else { } //遍历查找法 for(Point temp = head; temp != null; temp=temp.next) { } if(name.equals(temp.st.getName())) { System.out.println(temp.st.toString()); } //根据学生的名字,修改其成绩 public void amend(String name) { int amendStMath = 0; if(isEmpty()) { System.out.println("链表为空"); } else { //遍历查找法 for(Point temp = head; temp != null; temp=temp.next)

}

} } } if(name.equals(temp.st.getName())) { System.out.print("请输入" + name + "的分数:"); amendStMath = read.nextInt(); } temp.st.setMath(amendStMath); //打印出链表 public void disMyList() { } for(Point temp = head; temp != null; temp=temp.next) { System.out.println(temp.st.toString()); }

public class Link {

/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] math = {90, 80, 89, 87, 95}; String[] name = {"院长", "华女", "san女", "舍长仔", "阿金"}; Stu st = null; MyList list = new MyList(); //为链表添加节点 for(int i = 0; i

} } //打印链表 System.out.println("建立的链表为:"); list.disMyList(); //查找名字为华女的学生的信息 list.find("华女"); //修改名字为华女的学生的信息 list.amend("华女"); System.out.println("修改后的学生信息为:"); //打印链表 list.disMyList();

import java.util.*;

//学生类

class Stu

{

} private int math;//学生的学号 private String name;//学生的名字 public Stu(int math, String name) { } //获得学生的名字 public String getName() { return name; } //修改学生的分数 public void setMath(int math) { this.math = math; } //重写toString方法 public String toString() { } return name + ": " + math; this.math = math; this.name = name;

//链表节点类

class Point

{

Stu st = null; //链表数据域 Point next = null; //链表指针域 public Point(Stu st) { } this(st, null); //调用另一个构造方法 public Point(Stu st, Point next) {

}

} this.next = next;

//建立链表类,并实现其查找,添加,修改,删除,打印的功能 class MyList

{

private Point head = null; //表头 private Point tail = null; //表尾 Scanner read = new Scanner(System.in); //构造方法,默认表头和表尾都为空 public MyList() { } this.head = null; this.tail = null; //判断链表是否为空 public boolean isEmpty() { } return head == null; //建立表头 public void addHead(Stu st) { } //建立表尾 public void addTail(Stu st) { //判断表头是否为空,为空则先建立表头 if(isEmpty()) //调用判断判断链表是否为空的方法 { this.addHead(st);//调用建立表头的方法 head = new Point(st, head); //判断表尾是否为空,这里的主要作用是让表尾指向表头 if(null == tail) { } tail = head;

} else { Point temp = new Point(st); tail.next = temp; } tail = tail.next; //按学生名字,实现查找功能 public void find(String name) { } System.out.println("/n/n/n查询结果为:"); if(isEmpty()) { System.out.println("链表为空"); } else { } //遍历查找法 for(Point temp = head; temp != null; temp=temp.next) { } if(name.equals(temp.st.getName())) { System.out.println(temp.st.toString()); } //根据学生的名字,修改其成绩 public void amend(String name) { int amendStMath = 0; if(isEmpty()) { System.out.println("链表为空"); } else { //遍历查找法 for(Point temp = head; temp != null; temp=temp.next)

}

} } } if(name.equals(temp.st.getName())) { System.out.print("请输入" + name + "的分数:"); amendStMath = read.nextInt(); } temp.st.setMath(amendStMath); //打印出链表 public void disMyList() { } for(Point temp = head; temp != null; temp=temp.next) { System.out.println(temp.st.toString()); }

public class Link {

/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] math = {90, 80, 89, 87, 95}; String[] name = {"院长", "华女", "san女", "舍长仔", "阿金"}; Stu st = null; MyList list = new MyList(); //为链表添加节点 for(int i = 0; i

} } //打印链表 System.out.println("建立的链表为:"); list.disMyList(); //查找名字为华女的学生的信息 list.find("华女"); //修改名字为华女的学生的信息 list.amend("华女"); System.out.println("修改后的学生信息为:"); //打印链表 list.disMyList();


相关文章

  • 实现单链表的就地逆置算法
  • 题目:有一个线性表(a1,a2,a3,....,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置.所谓"就地"指辅助空间应该为O(1). 方法一:采用头插法 先将L的头节点head的Next域置为NULL变成 ...查看


  • 大唐电信java笔试题及答案
  • 1. Java如何实现多态,实现的主要方法. java是借助方法的重写和重载实现多态. 重载的特性,方法名相同.返回类型,传入方法的参数不同(包括个数和类型). 重写的特性,方法名相同,返回类型,参数均相同,必须发生在子类. 2. Hash ...查看


  • [精编完整版]双向循环链表的创建及相关操作的实现毕业论文说明书
  • (此文档为word 格式,下载后您可任意编辑修改!) 山东建筑大学计算机科学与技术学院 课程设计说明书 题 目: 双向链表的创建和操作的实现 树的创建及相关操作的实现 课 程: 数据结构与算法 院 (部): 计算机学院 专 业: 网络工程 ...查看


  • 单链表的创建及操作
  • 山东师范大学 实 验 报 告 课 程: 数据结构 班 级: 2013级1班 实验序号: 116王海峰 姓 名: 王海峰 学 号: [1**********]6 实验日期:2014.3.25 题目: 单链表的创建及操作 一.实验目的和要求 ( ...查看


  • 单链表实验内容
  • 专业 学号 姓名 吴兴平 教师评定_________________ 实验题目 单链表操作 一. 实验内容 1)建立带表头结点的单链表: (2)输出单链表中所有结点的数据域值: (3)输入x,y 在第一个数据域值为x 的结点之后插入结点y ...查看


  • 数据结构第2章-答案
  • 一.填空题 01.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储结构. 02.线性表L=(a1,a2, -,an )用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均 ...查看


  • 数据结构图的建立与输出课程设计
  • 计算机工程学院 数据结构课程 设计报告 题 目: 图的建立与输出 姓 名: 学 号: 专业班级: 指导教师: 设计时间: 目录 1 课题任务与计划„„„„„„„„„„„„„„„3 2 设计方案及原理„„„„„„„„„„„„„„„3 2.1 ...查看


  • 京东2014研发工程师校招笔试题
  • 京东2014研发⼯程师校招笔试题 ⼀. 单项选择题 1. 链表不具备的特点是 A B C D可随机访问任何⼀个元素插⼊,删除操作不需要移动元素⽆需事先估计存储空间⼤⼩所欲存储空间可以是不连续的 2. 在⼀个单链表中,若删除 P 所指结点的后 ...查看


  • 单链表的定义及基本操作
  • 附件2: 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级 XXX 3班 学号 0123456 姓名 XXX 指导教师 XIAO FENG 成绩 实验题目 ...查看


热门内容