链表与数组之间的相互转换

数组是一种连续的数据结构,而链表是一种离散的数据结构,链表与数组如何转换呢?

1、  数组转换成链表:

root=new LinkNode(s[0]);//生成链表的根节点,并将数组的第一个元素的值赋给链表的根节点
LinkNode other=root;//生成另一个节点,并让other指向root节点,other在此作为一个临时变量,other和root指向同一地址 
                   for(int i=1;i

 
链表与数组之间的相互转换_第1张图片
 
链表与数组之间的相互转换_第2张图片
 

 

 

 

具体代码实现如下:

/**
 * 将数组转换成链表输出
 * @author zr
 *
 */
public class Test2 {
	private static LinkNode root;
	

	/**
	 * 程序入口处
	 * @param args
	 */
	public static void main(String[] args) {
		Test2 t2=new Test2();
		String [] s=new String[]{"a1","a2","a3","a4"};
		root=t2.LinkList(s);
		t2.printLinkList(root);
	}
	
	/**
	 * 创建一个链表
	 * @param s 一个字符串
	 * @return 返回链表根节点
	 */
	public LinkNode LinkList(String [] s){
		root=new LinkNode(s[0]);//生成链表的根节点,并将数组的第一个元素的值赋给链表的根节点
		LinkNode other=root;//生成另一个节点,并让other指向root节点,other在此作为一个临时变量,相当于指针
		for(int i=1;i

 

结果为:

a1
a2
a3
a4

 

 

 

2、 链表转换成数组:

 

 

 

int size=LinkListSize(lr);//获得链表的长度

Object [] obj=new Object[size];

obj[0]=lr.getObj();//将根节点的值赋给数组的第一个元素

LinkNode tem=lr;

for(int i=1;i

 

 
链表与数组之间的相互转换_第3张图片
 
链表与数组之间的相互转换_第4张图片
  

 

具体代码实现如下:

 

 

/**
 * 把链表转换成数组
 * @author zr
 *
 */
public class Test3 {
	private int size=1;
	private int count;
	private static LinkNode root;
	static Test3 t3=new Test3();
	
	public static void main(String [] args){
		root=t3.createLinkList();//取得创建好的链表
		System.out.println("需要转换的链表为:");
		t3.printLinkList(root);//打印出链表
		t3.LinkList_Array(root);
	}

	/**
	 * 将一个链表转换成数组
	 * @param root 链表的根节点
	 */
	public void LinkList_Array(LinkNode lr){

		int size=LinkListSize(lr);//获得链表的长度
		Object [] obj=new Object[size];
		obj[0]=lr.getObj();//将根节点的值赋给数组的第一个元素
		LinkNode tem=lr;
		for(int i=1;i

 

 

 

结果为:

需要转换的链表为:
1  根节点
2  节点1
3  节点2
4  节点3
5  节点4
该链表转换成数组为:
0 根节点
1 节点1
2 节点2
3 节点3
4 节点4

 

 

 

你可能感兴趣的:(java)