一、數據准備
1. 定義節點
2. 定義鏈表
1.數據部分
2.節點部分
class DATA //數據節點類型
{
String key;
String name;
int age;
}
class CLType //定義鏈表結構
{
DATA nodeData =new DATA();
CLType nextNode;
}
二、追加節點
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;
}
}
三、插入頭結點
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;
}
}