利用类实现链表
1).定义java类实现一个链表,参考C语言链表一节的知识,实现链表的创建,增加节点(有序插入),
删除节点,遍历,显示,查找
2).利用上面实现有链表,完成一个电话本管理程序,实现个人电话本的功能
可以增加条目,删除,修改,按姓名查找
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();
}
}
谢谢大神,么么哒