数据结构——单向传统链表(java实现)

      今天看了Robert Lafore的《java数据结构和算法》(第二版)才知道昨天学习的单向链表,是双端链表,就是在链表中有两引用分别指向第一个链结点和最后一个链结点,传统的单向链接就是所谓的单端链表(姑且这么叫吧)。另外,以前一直想不明白first到底是啥意思(想要那种非常直观的意思),现在明白了它是对第一个链结点的引用,也可以这么理解链表本身的对象中有一个字段指向对第一个链结点的引用。

      下面代码是简单的单向单端链表的例子:

class Link
{
	public int iData;
	public double dData;
	public Link next;
//-------------------------------------
	public Link(int iData,double dData)
	{
		this.iData = iData;
		this.dData = dData;
	}
//-------------------------------------
	public void displayLink()
	{
		System.out.print("{" + iData + ", " + dData + "}");
	}
}
class LinkList
{
	private Link first;
	public LinkList()
	{
		first = null;
	}
	public boolean isEmpty()
	{
		return (first == null);
	}

	public void insertFirst(int id, double dd)
	{
		Link newLink = new Link(id, dd);
		newLink.next = first;
		first = newLink;
	}

	public Link deleteFirst()
	{
		Link temp = first;
		first = first.next;
		return temp;
	}


	public void displayList()
	{
		System.out.println("List(first-->last): ");
		Link current = first;
		while(current != null)
		{
			current.displayLink();
			current = current.next;
		}
		System.out.println("");
	}
}

public class LinkListApp
{
	public static void  main(String[] args)
	{
		LinkList theList = new LinkList(); //nake new list

		theList.insertFirst(12,23.66);     //insert four items, insert from front everytime!
		theList.insertFirst(174,2454.66);
		theList.insertFirst(154,25554.66);
		theList.insertFirst(189,256.66);

		theList.displayList();			//diplay what you have inserted!

		while(!theList.isEmpty())		//delete util it is empty
		{
			Link aLink = theList.deleteFirst();
			System.out.print("Deleted: ");
			aLink.displayLink();
			System.out.println("");
		}

		theList.displayList();
	}
}

运行过程:插入四个items,注意每次都是从头插入,所以输出时是“倒序”输出的,最后又逐一删掉item,不删完不罢休!

运行结果:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值