java中实现链表(转)
分析:
上述节点具备如下特征:
1、 每个节点由两部分组成(存储信息的字段,存储指向下一个节点的指针) 2、 节点之间有着严格的先后顺序。
3、 单链表节点是一种非线性的结构,在内存中不连续分配空间。
设计:
设计节点
设计涉及到算法: 初始化单链表:
1、 提供一个init方法,用来加载链表数据 2、 实现链表的链接。
具体代码如下:
public class Linker { public NODE head; //define the initial function to init the single linker! public void init(char v_char[]) { NODE ptr NODE p = new NODE(); head = p; for(int i = 0; i < v_char.length;i++) { ptr = new NODE(); ptr.info = v_char[i]; p.link = ptr; ptr.link = null; p = ptr; } } //define search in linker public boolean searchinlinker(char ch) {
boolean flag = false; NODE ptr; ptr = head.link; while( ptr != null) {
if(ch == ptr.info) {
flag = true;
break; }
else { ptr = ptr.link; } return flag; } //define the insert fuction public void insertintolinker(char pos,char ch) {
NODE ptr;
NODE p; ptr = head.link;
while( ptr != null)
{
if(pos == ptr.info) {
//实现数据插入 p = new NODE(); p.info = ch; p.link = ptr.link; ptr.link = p; break; } else { ptr = ptr.link; } } //defin the delete function public void deletefromlinker(char ch) { NODE ptr; NODE p; ptr = head.link; p = head; while( ptr != null) {
if(ch == ptr.info) {
//实现数据删除 p.link = ptr.link;
System.gc(); break; } else
{ p = ptr; ptr = ptr.link; } } } //defin the print linker public void printlinker() { NODE ptr; ptr = head.link; while (ptr != null) {
System.out.print(" " + ptr.info + "->"); ptr = ptr.link; } System.out.println("null"); } }