一、數據准備
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; } }