package 算法.链表;
class Data
{
String key;
String name;
int age;
}
class CLType { //定义链表结构
Data nodedata = new Data();
CLType nextNode;
//在链表头添加链表头
CLType CLAddFirst(CLType head, Data nodedata) {
CLType node;
if ((node = new CLType()) == null) {
System.out.println("申请内存失败");
return null;
} else {
node.nodedata = nodedata;//保存数据
node.nextNode = head;//指向数据头
head = node;
return head;
}
}
//在链表后面添加数据
CLType CLAddEnd(CLType head, Data nodedata) {
CLType node, htemp; //首先是要进行分配内存
if ((node = new CLType()) == null) {
System.out.println("申请内存失败");
return null;
} else {
node.nodedata = nodedata;//保存数据
node.nextNode = null;//设置节点引用为空
if (head == null) {
head = node;
return head;
}
htemp = head;
while (htemp.nextNode != null)//链表头非空,向后查找
{
htemp = htemp.nextNode;
}
htemp.nextNode = node;
return head;
}
}
//查找结点
CLType CLFind(CLType head, String key) {
CLType htemp;
htemp = head;
while (htemp != null)
if (htemp.nodedata.key.compareTo(key) == 0) {
return htemp;
}
htemp = htemp.nextNode;
return null;
}
//插入结点
CLType CLInsert(CLType head, String findkey,Data nodedata)
{
CLType node,nodetemp;
if ((node = new CLType()) == null) {
System.out.println("申请内存失败");
return null;
} node.nodedata = nodedata;//保存数据
nodetemp=CLInsert(head,findkey,nodedata);
if (nodetemp!=null)
{
node.nextNode=nodetemp.nextNode;
nodetemp.nextNode=node;
}
else {
System.out.println("未找到插入位置");
}
return head;
}
//删除结点
int CLDelete(CLType head, String key)
{
CLType node,htemp;
htemp=head;
node=head;
while (htemp!=null)
{
if (htemp.nodedata.key.compareTo(key)==0){
node.nextNode=htemp.nextNode;
htemp=null;
}
else {
node=htemp;
htemp=htemp.nextNode;
}
}
return 0;
}
//计算链表长度
int CLLength(CLType head)
{
CLType htemp;
int len=0;
htemp=head;
while (htemp!=null)
{
len++;
htemp=htemp.nextNode;
}
return len;
}
//显示所有结点
CLType CLShow(CLType head)
{
CLType htemp,node ;
Data nodedata;
htemp=head;
System.out.println("当前列表共有%d个结点,数据如下\n"+CLLength(head));
while (htemp!=null)
{
nodedata=htemp.nodedata;
System.out.println("结点(%s%s%d)\n",nodedata.key,nodedata.name,nodedata.age);
htemp=htemp.nextNode;
}
htemp.nextNode=node;
return head;
}
}
public class lianbiaoDemo {
public static void main(String[] args) {
}
}
主函数没有写,略掉了