用java语言实现单链表并完成如下操作:
/*1.建立具有5个元素的单链表,5个元素的值自己指定*/
/*2.输出当前单链表*/
/*3.在第4个位置插入值为15的元素*/
/*4.输出插入后的单链表*/
/*5.输出单链表的长度*/
/*6.从键盘读入一个值,在单链表中查找该值并将结果输出*/
/*7.从键盘读入一个值i,在单链表中查找第i个元素并将结果输出*/
/8.从键盘读入一个值i,删除单链表中第i个元素/
/*9.输出删除后的单链表*/
用java语言实现单链表并完成如下操作:
/*1.建立具有5个元素的单链表,5个元素的值自己指定*/
/*2.输出当前单链表*/
/*3.在第4个位置插入值为15的元素*/
/*4.输出插入后的单链表*/
/*5.输出单链表的长度*/
/*6.从键盘读入一个值,在单链表中查找该值并将结果输出*/
/*7.从键盘读入一个值i,在单链表中查找第i个元素并将结果输出*/
/8.从键盘读入一个值i,删除单链表中第i个元素/
/*9.输出删除后的单链表*/
public class Node {
String name;
//自引用,下一个节点的地址
Node next;
public Node() {
}
public Node(String name) {
this.name = name;
next = null;
}
}
//链表
public class Link {
//定义头节点
Node head;
//初始化
public Link() {
//建表
head = new Node();
head.next = null;
}
//新增节点
public void addNode(String data){
/*1.获取表头
*2.通过表头找到最后一个元素;
*3.把新增的节点放到最后一个元素的后面
* */
Node p = head;
while(p.next!=null){
p=p.next;
}
//需要新增的节点
Node temp = new Node(data);
p.next = temp;
}
//删除节点
public void delNode(String data){
/*1.获取表头
*2.通过表头找到最后一个元素;
*3.把最后一个元素删除
* */
Node p = head;
while(p.next!=null){
//删除节点
if(p.next.name.equals(data)){
p.next = p.next.next;
break;
}else{
p=p.next;
}
}
}
//遍历
public void display(){
Node p = head;
while(p.next!=null){
System.out.println(p.next.name+"->>");
p=p.next;
}
}
//查找
public void findNode(String data){
/*1.获取表头
*2.通过表头找到最后一个元素;
*3.把最后一个元素删除
* */
Node p = head;
while(p.next!=null){
//删除节点
if(p.next.name.equals(data)){
System.out.println("data="+p.next.name);
break;
}else{
p=p.next;
}
}
}
//插入节点
public void insertNode(String param,String data){
/*param表示新增的节点要插入到该节点的后面
*
*1.获取表头
*2.通过表头找到param元素的节点;
*3.把新增的节点放到改节点的后面
* */
Node p = head;
while(p.next!=null){
if(p.next.name.equals(param)){
Node t = p.next;
Node insertNode = new Node(data);
insertNode.next = t.next;
t.next = insertNode;
break;
}else{
p=p.next;
}
}
}
//链表大小
public int size(){
int n=0;
Node p = head;
while(p.next!=null){
p=p.next;
n++;
}
return n;
}
public static void main(String[] args) {
Link link = new Link();
link.addNode("组长");
link.addNode("部门经理");
link.addNode("主管副总");
link.addNode("总经理");
link.display();
System.out.println("size="+link.size());
link.delNode("部门经理");
link.display();
System.out.println("---------------------------");
link.insertNode("组长", "部门经理");
link.display();
}
}