package 链表中的查找算法;
import java.util.Scanner;
public class LinkFind {
public static void main(String[] args) {
Type node, head = null;
String key;
Scanner sc = new Scanner(System.in);
System.out.print("链表测试!\n 先输入链表中的 数据\n");
do {
System.out.print("输入添加的节点:(学号,姓名 年龄)");
Data data = new Data();
data.key = sc.next();
if (data.key.equals("0")) {
break;
} else {
Type t = new Type();
data.name = sc.next();
data.age = sc.nextInt();
head = t.Add(head, data);
}
} while (true);
head.All(head);// 显示所有节点
System.out.print("\n演示在链表中查找,输入查找关键字:");
key = sc.next();
node = head.find(head, key);
if (node != null) {
Data nodeData = node.Notedata;// 获取 节点的数据
System.out
.println("关键字" + key + "对应的节点为:(" + nodeData.key + " " + nodeData.name + " " + nodeData.age + ")");
} else {
System.out.print("在链表中未找到关键字为" + key + " 的节点!\n");
}
}
}
class Data {
String key;
String name;
int age;
}
class Type {
Data Notedata = new Data();
Type nextNode;
// 追加节点
Type Add(Type head, Data Notedata) {
Type node, htemp;
node = new Type();
node.Notedata = Notedata;// 保存数据
node.nextNode = null;// 设置节点指针为空,即是表尾
if (head == null) {
head = node;
return head;
}
htemp = head;
while (htemp.nextNode != null) {
htemp = htemp.nextNode;
}
htemp.nextNode = node;
return head;
}
// 查找节点
Type find(Type head, String key) {
Type htemp;// 保存链表头指针
htemp = head;
// 如果节点有效
while (htemp != null) {
// 若关键子和传入的关键 子相同
if (htemp.Notedata.key.equals(key)) {
return htemp;
}
// 处理下一个节点
htemp = htemp.nextNode;
}
return null;
}
// 计算 链表的长度
int length(Type head) {
Type htemp;
int len = 0;
htemp = head;
while (htemp != null) {
len++;
htemp = htemp.nextNode;// 处理下一个节点
}
return len;// 返回节点数量
}
// 遍历链表
void All(Type head) {
Type htemp;
Data Notedata;
htemp = head;
System.out.print("当前链表共有" + length(head) + "个节点,链表所有数据如下:\n");
while (htemp != null) {
Notedata = htemp.Notedata;// 获取节点数据
System.out.println("节点(" + Notedata.key + "" + Notedata.name + "" + Notedata.age + ")");
htemp = htemp.nextNode;
}
}
}
原文作者:查找算法
原文地址: https://blog.csdn.net/Carrie_zzz/article/details/76040203
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。