
分析:
上述节点具备如下特征:
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");
}
}