原文地址:http://liuyanzhao.com/2230.html
刚才传了一个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();
}
}