赞
踩
提示:仅做参考!!! 仅做参考!!! 仅做参考!!!
目的:
提供的方法:
测试结果:
源码:
import java.awt.List; import java.util.Scanner; import javax.swing.plaf.synth.SynthScrollBarUI; import org.omg.CosNaming.IstringHelper; //创建一个节点类 class ListNode { int data; public ListNode next;// next 指向下一个节点(每一个对象就是一个节点 ) // 构造函数(构造器) public ListNode(int data) { this.data=data; } // 重写tostring() @Override public String toString() { return "ListNode [data=" + data + "]"; } } class SingleList{//创建单链表类 private ListNode top=new ListNode(0);//创建一个头结点(对象),不存放数据,值为空 // 向单链表中顺序添加node节点的最后 public void add(ListNode node) { ListNode foot=top;//辅助节点foot,并指向头节点 while(true) { if(foot.next==null)//链表为空时 break; else foot=foot.next;//不为空时,foot进行遍历直到找到链表的最后 } foot.next=node;//将node节点添加到链表最后 } // 顺序(从小到大)添加 public void OderAdd(ListNode node) { ListNode foot=top; boolean flag=false; while(true) { // 链表为空或找到位置 if(foot.next==null || foot.next.data>node.data) break; if(foot.next.data==node.data) { flag=true; break; } // 临时辅助指针后移 foot=foot.next; } if(flag) { System.out.println("插入值已存在,插入失败!"); } else { node.next=foot.next; foot.next=node; } } // 删除一个节点 public void delete(int n) { ListNode foot=top;//辅助节点foot,并指向头节点 while(true) { if(foot.next==null) { //链表为空时 break; } if(foot.next.data==n) { ListNode p; p=foot.next; //删除操作 foot.next=p.next; break; } else foot=foot.next; //foot后移 } } // 更新 public void update(int m,int n) { ListNode foot=top.next;//辅助节点foot,并指向头节点 while(true) { if(foot==null) { break; } if(foot.data==m) { //匹配成功 foot.data=n; break; } else foot=foot.next; //foot后移 } } // 查找 public void search(int n) { ListNode foot=top;//辅助节点foot,并指向头节点 int number=1; while(true) { if(foot.next==null) { System.out.println("链表为空"); break; } if(foot.next.data==n) { System.out.println(n+" 位于第 "+number+" 个节点上"); break; } else { foot=foot.next; //后移,实现遍历 number++; } } } // 打印单链表 public void show() { if(top.next==null) {//单链表为空时 System.out.println("此链表为空链表"); return; } else { ListNode foot=top.next;//创建辅助节点foot while(true) { if(foot!=null) { System.out.println(foot); foot=foot.next; //遍历实现打印 } else break;//foot为空时,结束 } } } } public class SingleLinkedList_增删改查 { public static void main(String[] args) { System.out.println("huxuehao(制)\n单链表的 增删改查"); Scanner s = new Scanner(System.in); SingleList singlelist = new SingleList(); boolean tf=true; while(tf) { System.out.println("--------------------------------------------------"); System.out.println("A_add B_delete C_update D_search E_show F_quit"); System.out.print("请选择:"); String select=s.next();System.out.println(); switch(select) { //选择判断语句 case"A":{ System.out.print("请输入被添加数:"); int value=s.nextInt(); ListNode listnode1 = new ListNode(value); singlelist.add(listnode1); System.out.println();break; } case"B":{ System.out.print("请输入被删除数:"); int value=s.nextInt(); singlelist.delete(value); System.out.println();break; } case"C":{ System.out.print("请输入被替换数:"); int date1=s.nextInt(); System.out.print("请输入替换数:"); int value=s.nextInt(); singlelist.update(date1,value); System.out.println();break; } case"D":{ System.out.print("请输入被查找数:"); int value=s.nextInt(); singlelist.search(value); System.out.println();break; } case"E":{ singlelist.show(); System.out.println();break; } case"F":{ tf=false;System.out.println();break; } default:System.out.println("无此选项!!");System.out.println();break; } } System.out.println("谢谢使用!"); s.close(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。