java資料結構連結串列
阿新 • • 發佈:2018-12-11
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) { } }
主函式沒有寫,略掉了