java学习笔记-----链表

 

1、工作原理:

   C语言中结点与结点之间的连接方式是指针,而在java中的连接方式是利用的引用关系。

 

2、示例:

/**

 * 链表的结点

 * @author Administrator

 *

 */

public class LinkNode<E> {

//结点中的成员

obj;

//前面的结点

LinkNode front = null;

//后面的结点

LinkNode next = null;

}

/**

 * 创建链表的类

 * @author Administrator

 *

 */

public class LinkList<E> {

//头结点

LinkNode head = null;

//尾结点

LinkNode last = null;

/**

 * 向链表中添加成员

 * @param obj 向链表中所添加的成员

 */

public void Add(E obj){

//创建一个新结点

LinkNode node = new LinkNode<E>();

if(head == null){//如果当前是空链表

//向结点中添加信息元素

node.obj = obj;

//头结点指向第一个结点

head = node;

//尾结点指向第一个结点

last = node;

}else{//如果当前不是空链表

//向结点中添加信息元素

node.obj = obj;

//构建新节点与旧尾结点的双向关系

last.next = node;

node.front = last;

//移交尾结点的位置

last = node;

}

}

/**

 * 删除链表中的成员

 * @param n 所要删除的成员在链表中的序号

 */

public void Delet(int n){

//先检查n的范围是否合适

if(n<1||n>Size()){

 System.out.println("请输入正确的范围数字。");

}else{

if(n == Size()){//如果删除的是最后一个结点

last = last.front;

last.next = null;

}else if(n == 1){//如果删除的是第一个结点

head = head.next;

}else{

//在头结点的位置创建测试结点

LinkNode node = head;

//一个用于计数的数字

int count = 0;

while(node.next != null){

++count;

if(count == n){

(node.front).next = (node.next).front;

}

//移动当前测试结点的位置

node = node.next;

}

}

}

}

/**

 * 查询并得到链表中的成员

 * @param n 所要查询的成员在链表中的序号

 */

public E Get(int n){

//先检查n的范围是否合适

if(n<1||n>Size()){

 System.out.println("请输入正确的范围数字。");

}else{

if(n == Size()){

return (E) last.obj

}else{

//在头结点的位置创建测试结点

LinkNode node = head;

//一个用于计数的数字

int count = 0;

while(node.next != null){

++count;

if(count == n){

return (E) node.obj;

}

//移动当前测试结点的位置

node = node.next;

}

}

}

return null;

}

/**

 * 修改链表中的成员

 * @param n 所要修改的成员在链表中的序号

 * @param obj 修改后的成员

 */

public void Change(int n,E obj){

//先检查n的范围是否合适

if(n<1||n>Size()){

 System.out.println("请输入正确的范围数字。");

}else{

if(n == Size()){

last.obj = obj; 

}else{

//在头结点的位置创建测试结点

LinkNode node = head;

//一个用于计数的数字

int count = 0;

while(node.next != null){

++count;

if(count == n){

node.obj = obj;

}

//移动当前测试结点的位置

node = node.next;

}

}

}

}

/**

 * 链表的大小

 * @return

 */

public int Size(){

int count = 0;

//在头结点的位置创建测试结点

LinkNode node = head;

while(node.next != null){

++count;

//移动当前测试结点的位置

node = node.next;

}

count++;

return count;

}

}

 

 

3、系统提供的链表:

java.util java.util 
类 LinkedList<E>

猜你喜欢

转载自yuyongjia.iteye.com/blog/1683567