码迷,mamicode.com
首页 > 其他好文 > 详细

链表相关

时间:2016-01-08 20:30:53      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。

链表类型
    单向链表

  • 双向链表

  • 循环链表

  • 块状链表

  • 其它扩展

这里以单项链表为例:

技术分享

(取自维基百科)

实现单向链表的初始化,添加节点(末尾和链中),删除节点(末尾和链中)。

class Linknode
{
	private int val;
	public Linknode next;
	public Linknode(int val)
	{
		this.val=val;
	}
}
class util
{
	public Linknode init_node()   //初始化
	{
		Linknode head=new Linknode();
		head.next==null;
		return head;
	}
	public void add(Linknode head,int val)  //空链表内添加元素
	{
		Linknode newnode=Linknode(val);
		Linknode last=last_node(head);
		last.next=newnode;
		newnode.next=null;
	}
	public void insert(Linknode node,int val)  //链表内插入元素
	{
		Linknode tmp=node.next;
		Linknode newnode=Linknode(val);
		node.next=newnode;
		newnode.next=tpm;		
	}
	public void delete(Linknode head)   //删除链表末尾元素
	{
		if (head.next=null)
			return null;
		Linknode tmp=last_node(head);
		tmp=null;
	}
	public void del (Linknode head,Linknode node)   //删除链表内元素
	{
		if (head.next=null)
			return null;
		Linknode previous=previous_node(head,node);
		Linknode tmp=node.next;
		if(previous!=null)
			previous.next=tmp;
		else
			System.out.print("none");
	}
	public Linknode find_node(Linknode head,int val){   //根据值来查找节点
		if (head.next=null)
			return null;
		Linknode tmp=head;
		while(tmp.next!=null)
		{
			if(tmp.next.val==val)
				return tmp.next;
			tmp=tpm.next;
		}
	}
	public Linknode last_node(Linknode head)   //最后一个元素
	{
		if (head.next==null) 
			return null;
		Linknode tmp=head;
		while(tmp.next!=null)
			tmp=temp.next;
		return tmp;
	}
	public Linknode previous_node(Linknode head,Linknode node)  //node元素前的一个元                                                                     //素
	{
		if (head.next==null) 
			return null;
		Linknode tmp=head;
		while(tmp.next!=null)
		{
			if (temp.next==node) 
				return node;
			temp=temp.next;				
		}
		return null;
	}
}		

还需要进一步修改。

链表相关

标签:链表

原文地址:http://zhenzhuangde.blog.51cto.com/10697385/1733035

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!