刚才传了一个java实现顺序表的基本功能的代码,下面是单链表的。同为笔记,以为回顾
文件名App.java
文件名App.java
- /*编写类,实现如下功能:
- *1、创建有序单链表
- *2、包含如下基本操作:初始化、增加、删除、查找、打印元素
- * 注意:初始化不同于用new 创建元素。
- *
- *目的:
- * 1、理解成员变量、成员方法的含义
- * 注意:相关方法的参数列表与C不同,顺序表成员的存取也与C不同
- * 2、理解类=成员变量+成员方法,以及其使用方式。
- **/
- import java.util.Scanner;
- class SortedLinkedList{
- class Node{ //定义单链表的结点类型(内部类,就是定义在类中的class)
- int data;
- Node next;
- }
- Node head; //链表的表头指针
- void init(){ head=new Node(); head.next=null;}//初始化
- void add(int x ){ //将x加入升序链表
- Node pre,p,q;
- for(pre=head, p=head.next; p!=null; p=p.next,pre=pre.next)
- if(p.data>x)break;
- q=new Node(); q.data=x;
- q.next=p; pre.next=q; //将q插入到pre和p之间
- }
- Node find(int x){//在表中重找x,找到则返回其前驱结点的指针,找不到则返回null
- Node pre,p;
- pre=head;p=head.next;
- while(p!=null && p.data!=x){pre=pre.next; p=p.next;}
- if(p==null)return null;
- return pre;
- }
- void del(int x){//从链表中删除值为x的元素
- Node pre=find(x);
- if(pre==null) return; //没找到
- else pre.next=pre.next.next; //实施删除
- }
- void showInfo(){
- for(Node p=head.next; p!=null; p=p.next)
- System.out.print(p.data+" ");
- }
- }
- class App{
- public static void main (String[] args) {
- SortedLinkedList L=new SortedLinkedList();
- L.init();
- System.out.print("请输入一组数,以-1结束:");
- Scanner sc=new Scanner(System.in);
- int x=sc.nextInt();
- while(x!=-1){ L.add(x); x=sc.nextInt(); }
- System.out.print("有序链表为:");
- L.showInfo();
- System.out.print("\n请输入要删除的数:");
- x=sc.nextInt(); L.del(x);
- System.out.print("有序链表为:");
- L.showInfo();
- System.out.print("\n请输入要插入的数:");
- x=sc.nextInt(); L.add(x);
- System.out.print("有序链表为:");
- L.showInfo();
- }
- }
2017年03月09日 23:36:42
java语言中的增删改查麽。。