您的位置:首页 > 编程语言 > Java开发

java实现链表结构详细代码

2016-03-31 14:57 453 查看
一、数据准备

 1. 定义节点

2. 定义链表

1.数据部分

2.节点部分

class DATA              //数据节点类型
{
String key;
String name;
int age;

}

class CLType                 //定义链表结构
{
DATA nodeData  =new DATA();
CLType nextNode;
}


二、追加节点

首先分配内存,保存新增节点

从头应用head开始追个检查,直到找到最后结点

将表尾结点地址部分设置为新增节点的地址

将新增节点的地址部分置为null

CLType CLAddEnd(CLType head,DATA nodeData)
{
CLType node,temp;
if((node=new CLType()==null){
System.out.println("申请内存失败");
return null;            //申请内存失败
}

else{
node.nodeData=nodeData;
node.nextNode=null;
if(head==null)
{
head =node;
return head;
}
temp=head;
while(temp!=null){
temp=temp.nextNode;               //查找链表的末尾

}
temp.nextNode=node;
return head;
}

}


三、插入头结点

分配内存空间

使新增节点指向head

使head指向新增节点

CLType CLAddFirst(DATA nodeData,CLType head){
CLType node;
if((node=new CLType())==null)
{
return null;
        
}
else{
node.nodeData=nodeData;
node.nextNode=head;
head=node;
return head;
}
}


四、查找节点

CLType CLFindNode(CLType head,String key)
{
CLType temp;
temp =head;
while(temp!=null){
if(temp.nodaData==key)
return temp;
temp=temp.nextNode;
}
return null;
}


五、插入节点

CLType CLInsentNode(CLType head,String findkey,DATA nodeData)
{
CLtype node,nodetemp;
if((node=new CLType())==null)
{
System.out.println("申请内存失败!");
return null;
}
node.nodaData=nodeData;
nodetemp=(head,findkey);     //查找对应节点
if(nodetemp!=null)                 //若找到节点
{
node.nextNode=nodetemp.nextNode;
nodetemp.nextNode=node;
}
else
{
System.out.println("未找到正确的插入位置!");
}
return head;
}


六、删除节点

int CLDeleteNode(CLType head; String key)
{
CKtype node,temp;
node = head;
temp = head;
while(temp!=null)
{
if(temp.nodeData.key.compareTo(key)==0)
{
node.nextNode=temp.nextNode;
temp=null;
return 1;
}
elas
{
note=temp;
temp=temp.nextNode;
}
}
return 0;
}


七、计算链表长度

int CLLength(CLType head )
{
CLType temp;
temp = head;
int length=0;
while(temp!=null)
{
length++;
temp=temp.nextNode;
}
return length;
}


八、显示所有节点

void CLAllNode(CLType head)
{
CLType temp;
DATA  nodeData;
temp = head;
System.out.println("当前链表共有"+CLLength(head)+"个节点。链表数据如下:");

while(temp!=null)
{
nodeData=temp.nodeData;
System.out.println(""+nodeData.key+nodeData.name+nodeData.age);
temp=temp.nextNode;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: