/** */
/**
* 数据结构中最常用最基本的结构:单链表的实现
* 最要的操作:创建一个单链表,列出所有的元素,查找一个元素,删除一个元素,在一个指定的元素中插入一个元素
*/
/** */ /**
* 单链表的结构
*/
class Link ... {
int key;//关键字
Link next;//下一个元素
public Link(int key,Link next)...{
this.key = key;
this.next = next;
}
public Link(int key)...{
this.key = key;
this.next = null;
}
}
/** */ /**
* 链表结构操作的实现
*/
public class LinkTest ... {
Link head = null;//头指针
/** *//**
* 构造一个单链表:以整型为例
*/
public void createLink(int[] count)...{
Link q = head;
for(int i=0;i<count.length;i++)...{
if(head == null)...{
head = q = new Link(count[i]);
}//end if
else...{
Link p = new Link(count[i]);
q.next = p;
q = p;
}
}
}
/** *//**
* 列出链表中的元素
*/
public void listElem()...{
Link q = head;
while(q.next != null)...{
System.out.println(q.key);
q = q.next;
}
}
/** *//**
查找一个元素
*/
public void search(int count)...{
Link q = head;
while(q.next != null)...{
if(q.key == count)...{
System.out.println("find the number : "+q.key);
return;
}
q = q.next;
}
System.out.println("not find the number : " + count);
}
/** *//**
* 删除一个元素
*/
public void del(int count)...{
Link q = head;
if(q.key == count)...{
Link p = q;
head = q = q.next;
p.next = null;
p = null;
return;
}else...{
while(q.next != null)...{
if(q.next.key == count)...{
Link s = q.next;
q.next = s.next;
s.next = null;
s = null;
return;
}
q = q.next;
}//end while
}
System.out.println("can not find the element,so can not del");
}
/** *//**
* 在一个元素后添加一个元素,如果找不到这个元素,就在链表的尾部添加一个元素
*/
public void addAfter(int count,int mark)...{
Link q = head;
Link p = null;
p = new Link(count);
while(q.next != null)...{
if(q.key == mark)...{
p.next = q.next;
q.next = p;
return;
}
q = q.next;
}
//Link s = new Link(count);
p.next = q.next;
q.next = p;
}
/** *//**
* 测试
*/
public static void main(String[] args)...{
int[] count = ...{1,2,3,4,5,6,7};
LinkTest test = new LinkTest();
test.createLink(count);//创建
test.listElem();//列出所有元素
test.search(2);//查找一个元素
test.del(2);//删除一个元素
test.listElem();//列出所有元素
test.addAfter(2,1);//在一个元素后添加一个元素
test.listElem();//列出所有元素
test.addAfter(7,7);//在一个元素后添加一个元素
test.listElem();//列出所有元素
}
}
* 数据结构中最常用最基本的结构:单链表的实现
* 最要的操作:创建一个单链表,列出所有的元素,查找一个元素,删除一个元素,在一个指定的元素中插入一个元素
*/
/** */ /**
* 单链表的结构
*/
class Link ... {
int key;//关键字
Link next;//下一个元素
public Link(int key,Link next)...{
this.key = key;
this.next = next;
}
public Link(int key)...{
this.key = key;
this.next = null;
}
}
/** */ /**
* 链表结构操作的实现
*/
public class LinkTest ... {
Link head = null;//头指针
/** *//**
* 构造一个单链表:以整型为例
*/
public void createLink(int[] count)...{
Link q = head;
for(int i=0;i<count.length;i++)...{
if(head == null)...{
head = q = new Link(count[i]);
}//end if
else...{
Link p = new Link(count[i]);
q.next = p;
q = p;
}
}
}
/** *//**
* 列出链表中的元素
*/
public void listElem()...{
Link q = head;
while(q.next != null)...{
System.out.println(q.key);
q = q.next;
}
}
/** *//**
查找一个元素
*/
public void search(int count)...{
Link q = head;
while(q.next != null)...{
if(q.key == count)...{
System.out.println("find the number : "+q.key);
return;
}
q = q.next;
}
System.out.println("not find the number : " + count);
}
/** *//**
* 删除一个元素
*/
public void del(int count)...{
Link q = head;
if(q.key == count)...{
Link p = q;
head = q = q.next;
p.next = null;
p = null;
return;
}else...{
while(q.next != null)...{
if(q.next.key == count)...{
Link s = q.next;
q.next = s.next;
s.next = null;
s = null;
return;
}
q = q.next;
}//end while
}
System.out.println("can not find the element,so can not del");
}
/** *//**
* 在一个元素后添加一个元素,如果找不到这个元素,就在链表的尾部添加一个元素
*/
public void addAfter(int count,int mark)...{
Link q = head;
Link p = null;
p = new Link(count);
while(q.next != null)...{
if(q.key == mark)...{
p.next = q.next;
q.next = p;
return;
}
q = q.next;
}
//Link s = new Link(count);
p.next = q.next;
q.next = p;
}
/** *//**
* 测试
*/
public static void main(String[] args)...{
int[] count = ...{1,2,3,4,5,6,7};
LinkTest test = new LinkTest();
test.createLink(count);//创建
test.listElem();//列出所有元素
test.search(2);//查找一个元素
test.del(2);//删除一个元素
test.listElem();//列出所有元素
test.addAfter(2,1);//在一个元素后添加一个元素
test.listElem();//列出所有元素
test.addAfter(7,7);//在一个元素后添加一个元素
test.listElem();//列出所有元素
}
}