您的位置:首页 > 编程语言 > Java开发

[记录]Java---实现简单的链表

2015-05-07 15:40 423 查看
一个简单的链表,顺便复习一下C
// 1、定义一个节点类 Node.java:

package Java链表;
/**
* 	@author 高攀
*	节点的定义(相当于C语言的结构体)
*/
public class Node {

public Object data;//数据域。
public Node next;//下一个节点。

public Node(){

}
public Node(Object data) {
//构造函数给数据域赋初值。
this.data = data;
}
}

// 2、编写链表类 LinkList.java

package Java链表;

import java.util.ArrayList;

/**
* @author 高攀
*
*/

public class LinkList {

public Node head = null;//头结点
//创建将要对链表进行操作的两个引用(指针)
public Node p = null;
public Node q = null;

//创建链表
public void createList(ArrayList o){

head = new Node();
q = head; //用q取得head
for (int i = 0; i < o.size(); i++) {
p = new Node(o.get(i)); //新建节点
q.next = p;
q = q.next;//把q后移
}
p.next = null; //最后把链表设为null。
}
//显示链表中所有元素
public void showList(){

if(head!=null){//如果创建了链表才执行显示链表
Node n = head;
System.out.println("更新链表后:");
while(n.next!=null){
n = n.next;
if(n.next==null){
System.out.print(n.data);
}else{
System.out.print(n.data+"--->");
}
}
}else{
System.out.println("您还没有创建链表!不能进行任何操作!");
}
}
//增
public void addList(Object o){

if(head!=null){//如果创建了链表才执行添加链表
q = head;
System.out.println("你添加后的链表是:");
while(q!= null){

if(q.next==null){//找到了最后一个节点
p = new Node(o);
q.next = p;
p.next = null;
showList();
break;
}
q = q.next;
}
}else{
System.out.println("您还没有创建链表!不能进行任何操作!");
}
}
//删
public void removeList(Object o){
if(head!=null){//如果创建了链表才执行删除链表
q = head;
System.out.println("你删除后的链表是:");
while(q!= null){
p = q.next;//p是q的下一个
if(p.data.equals(o)){//找到了该 删除的节点的话
if(p.next == null){//如果是尾节点
p = null;
q.next = null;
showList();
break;
}else{
//移除这个节点
p = p.next;
q.next = p;
showList();
break;
}
}
q = q.next;//q一直后移

}
}else{
System.out.println("您还没有创建链表!不能进行任何操作!");
}

}
//查
}

// 3、测试类 TestLink.Java

package Java链表;
import java.util.ArrayList;
import java.util.Scanner;

/**
* @author 高攀
*
*/

public class TestLink {

public static void main(String[] args) {

try {
LinkList list = new LinkList();
System.out.println("输入多长的链表?");
Scanner sc = new Scanner(System.in);
Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
int s = sc.nextInt();
ArrayList o = new ArrayList();
System.out.println("输入你的数据:");
for (int i = 0; i < s; i++) {
o.add(sc.next());
}
list.createList(o);
list.showList();
System.out.println("添加:");
Object oo = sc1.next();
list.addList(oo);
System.out.println("\n你要删除的元素:");
Object ooo = sc2.next();
list.removeList(ooo);
} catch (Exception e) {
e.printStackTrace();
return ;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java c语言 链表